Page 380 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 380

09-4  원형 이중 연결 리스트









                   이번에는 원형 이중 연결 리스트에 대해 살펴보겠습니다.



                   원형 리스트

                   그림 9-17과 같이 선형 리스트의 꼬리 노드가 머리 노드를 가리키면 원형 리스트(circular list)라
                   고 합니다. 원형 리스트는 고리 모양으로 나열된 데이터를 저장할 때 알맞은 자료구조입니다.


                   head
                                                                 머리 노드를 가리킵니다.
                         A      B       C      D      E       F


                                          [그림 9-17] 원형 리스트


                   원형 리스트와 선형 리스트의 차이점은 꼬리 노드의 다음 노드를 가리키는 포인터가 널
                   (NULL)이 아니라 머리 노드의 포인터 값이라는 점입니다. 원형 리스트는 선형 리스트에서 사
                   용했던 것과 같은 자료형을 사용할 수 있습니다. 또한 앞으로는 리스트를 관리하는 구조체 포
                   인터를 list라고 하겠습니다. 그러면 먼저 원형 리스트에서 발생할 수 있는 리스트의 상태를

                   판단하는 방법을 알아보겠습니다.


                   빈 원형 리스트를 판단하는 방법

                   노드가 없는(비어 있는) 원형 리스트인지 판단하려면 다음 식을 사용합니다.


                     list->head == NULL     /* 선형 리스트가 비어 있는지 확인합니다. */


                   노드가 1개인 원형 리스트를 판단하는 방법

                   노드가 1개라면 머리 노드의 다음 포인터는 자기 자신인 머리 노드를 가리킵니다. 노드가 1개
                   인 원형 리스트인지 판단하려면 다음 식을 사용합니다.


                     list->head->next == list->head   /* 노드가 1개인지 확인합니다. */





                   380   C 알고리즘
   375   376   377   378   379   380   381   382   383   384   385