본문 바로가기

알고리즘 & 자료구조/자료구조

[자료구조] 원형 배열(Circular Array)

원형 배열

  • 고정된 크기의 배열을 마치 양 끝이 연결된 것처럼 사용할 수 있게 한 자료구조.
  • 배열의 크기가 N일 때, 배열의 마지막 요소(N-1)에 도착하면, 다음 배열요소는 첫번째 요소(0)로 순환하는 구조.
  • 처음 들어간 데이터가 먼저 나오는 FIFO(First in first out) 구조의 데이터 버퍼에 적합. => 큐(Que)
  • 비원형의 일반 배열은 마지막에 들어간 데이터가 먼저 나오는 LIFO(Last in first out) 구조의 버퍼에 적합하다

구현

  • mod 연산자를 사용하여 마지막 배열의 다음인덱스가 첫 배열 인덱스로 돌아오도록 구현
        public static void printArray()
        {
            //원형탁자에 8명의 사람이 있다고 가정.
            // a, b, c, d, e, f, g, h
            // 이 때 임의의 사람을 선택해서 그 사람으로부터 시계방향으로 모든 사람들의 명칭을 순서대로 출력하는 프로그램      
            char[] a = "abcdefg".ToCharArray();
            int startIndex = 2;

            for (int i = 0; i < a.Length; i++) {
                int index = (startIndex + i) % a.Length;
                Console.WriteLine(a[index]);
            }

        }