Page 342 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 342
36 /*--- 꼬리 노드를 삭제 ---*/
37 void RemoveRear(List *list);
38
39 /*--- 선택한 노드를 삭제 ---*/
40 void RemoveCurrent(List *list);
41
42 /*--- 모든 노드를 삭제 ---*/
43 void Clear(List *list);
44
45 /*--- 선택한 노드의 데이터를 출력 ---*/
46 void PrintCurrent(const List *list);
47
48 /*--- 선택한 노드의 데이터를 출력(줄 바꿈 문자 포함) ---*/
49 void PrintLnCurrent(const List *list);
50
51 /*--- 모든 노드의 데이터를 리스트 순서대로 출력 ---*/
52 void Print(const List *list);
53
54 /*--- 연결 리스트 종료 ---*/
55 void Terminate(List *list);
56 #endif
위에서 head는 연결 리스트의 머리 노드를 가리키는 포인터이고, crnt는 현재 선택한 노드를
가리키는 포인터입니다. ‘검색’한 노드를 선택하고 ‘삭제’하는 용도로 사용합니다.
각 함수를 실행한 다음 crnt 값이 어떻게 변화하는지는 표 9-1(356쪽)에 정리해 두었습니다.
Member.h는 이후 프로그램에서도 계속 사용합니다.
실습 9-2[A] •완성 파일 chap09/LinkedList.c
01 /* 포인터로 만든 연결 리스트(소스) */
02 #include <stdio.h>
03 #include <stdlib.h>
04 #include "Member.h" 실습 11-1에서 작성
05 #include "LinkedList.h"
06
07 /*--- 노드를 동적으로 생성 ---*/
08 static Node *AllocNode(void)
09 {
10 return calloc(1, sizeof(Node));
11 }
342 C 알고리즘