Notice
Recent Posts
Recent Comments
Link
스토리지
[3.29] 원형 배열 본문
원형 배열이란?
- 배열의 끝 인덱스 다음에 시작 인덱스를 연결시킨 것.
구현
두 개만 기억하면됨.
- pointer가 배열의 크기를 넘어가는가? => mod연산 수행
- pointer가 배열 안에서 움직이는가? => 그대로 대입
using System;
namespace Study00
{
public class App
{
public App()
{
DynamicArray<char> arr = new DynamicArray<char>();
string tmp = "abcdef";
for(int i = 0; i < tmp.Length; i++)
{
arr[i] = tmp[i];
}
Console.Write("arr[0]부터 arr[0]+7까지의 문자 출력 : ");
arr.Print(0, 7);
Console.Write("arr[3]부터 arr[3]+6까지의 문자 출력 : ");
arr.Print(3, 6);
Console.Write("arr[3]부터 arr[3]+2까지의 문자 출력 : ");
arr.Print(3, 2);
}
}
}
using System;
namespace Study00
{
public class DynamicArray<T>
{
private T[] arr;
private int pointer; //인덱스를 가리키는 변수
private int number; //배열의 몇개의 원소가 할당되었는지
public T this[int i]
{
get
{
return GetElement(i);
}
set
{
Add(value);
}
}
public DynamicArray(int capacity = 6)
{
pointer = number = 0;
arr = new T[capacity];
}
private void Add(T element)
{
if (number >= arr.Length)
{
Console.WriteLine("배열 가득참.");
return;
}
arr[pointer++ % arr.Length] = element;
}
private T GetElement(int index)
{
return arr[index % arr.Length];
}
public void Print(int startIndex, int n)
{
for (int i = 0; i < n + 1; i++)
{
Console.Write(arr[startIndex++ % arr.Length]);
}
Console.WriteLine();
}
}
}
'Unity > 자료구조' 카테고리의 다른 글
[3.30] Single Linked List 복습 (0) | 2021.03.30 |
---|---|
[3.29] Linked List (0) | 2021.03.29 |
[3.29] Dynamic Array (0) | 2021.03.29 |
[3.29] Array (0) | 2021.03.29 |
[3.29] Data Structure (0) | 2021.03.29 |
Comments