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

40  /*--- 원형 이중 연결 리스트 종료 ---*/
                     41  void Terminate (Dlist *list)
                     42  {
                     43    Clear(list);        /* 모든 노드를 삭제 */
                     44    free(list->head);    /* 더미 노드를 삭제 */
                     45  }



                   모든 노드를 삭제하는 Clear 함수
                   Clear 함수는 더미 노드를 제외하고 모든 노드를 삭제하는 함수로, 리스트가 텅 빌 때까지
                   RemoveFront 함수를 사용해 머리 노드의 삭제를 반복합니다. 삭제가 끝나면 선택한 노드에

                   대한 포인터 list->crnt가 가리키는 노드는 더미 노드 list->head로 업데이트합니다.


                   원형 이중 연결 리스트를 종료하는 Terminate 함수

                   Terminate 함수는 원형 이중 연결 리스트를 종료하는 함수입니다. 먼저 Clear 함수를 호출
                   해 모든 노드를 삭제하고 더미 노드의 메모리 영역도 해제합니다.




                   원형 이중 연결 리스트를 사용한 프로그램
                   실습 9-9는 원형 이중 연결 리스트를 사용한 프로그램입니다.
                      이 프로그램을 컴파일하려면 Member.h, Member.c, CircDblLinkedList.h, CircDblLinkedList.c가 필요합니다.



                      실습 9-9                                      •완성 파일 chap09/CircDblLinkedListTest.c

                     01  /* 원형 이중 연결 리스트를 사용하는 프로그램 */
                     02  #include <stdio.h>
                     03  #include "Member.h"  실습 11-1에서 작성
                     04  #include "CircDblLinkedList.h"
                     05
                     06  /*--- 메뉴 ---*/
                     07  typedef enum {
                     08    TERMINATE, INS_FRONT, INS_REAR,   RMV_FRONT, RMV_REAR, PRINT_CRNT,
                     09    RMV_CRNT, SRCH_NO, SRCH_NAME, PRINT_ALL, NEXT, PREV, CLEAR
                     10  } Menu;
                     11
                     12  /*--- 메뉴 선택 ---*/
                     13  Menu SelectMenu (void)
                     14  {




                   396   C 알고리즘
   391   392   393   394   395   396   397   398   399   400   401