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 알고리즘