스토리지

[3.29] 원형 배열 본문

Unity/자료구조

[3.29] 원형 배열

ljw4104 2021. 3. 29. 16:24

원형 배열이란?

  • 배열의 끝 인덱스 다음에 시작 인덱스를 연결시킨 것.

구현

두 개만 기억하면됨.

  • 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