Page 366 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 366
실습 9-4 •완성 파일 chap09/ArrayLinkedList.h
01 /* 커서로 만든 연결 리스트(헤더) */
02 #ifndef ___ArrayLinkedList
03 #define ___ArrayLinkedList
04
05 #include "Member.h" 실습 11-1에서 작성
06
07 #define Null –1 /* 빈 커서 */
08
09 typedef int Index; /* 커서의 자료형 */
10
11 /*--- 노드 ---*/
12 typedef struct {
13 Member data; /* 데이터 */
14 Index next; /* 다음 노드 */
15 Index Dnext; /* 프리 리스트의 다음 노드 */
16 } Node;
17
18 /*--- 연결 리스트 ---*/
19 typedef struct {
20 Node *n; /* 리스트 본체(배열) */
21 Index head; /* 머리 노드 */
22 Index max; /* 사용 중인 꼬리 레코드 */
23 Index deleted; /* 프리 리스트의 머리 노드 */
24 Index crnt; /* 선택한 노드 */
25 } List;
26
27 /*--- 연결 리스트를 초기화(가장 큰 요소 개수는 size) ---*/
28 void Initialize(List *list, int size);
29
30 /*--- 함수 compare로 x와 같은 노드를 검색 ---*/
31 Index search(List *list, const Member *x, int compare(const Member *x, const Member *y));
32
33 /*--- 머리에 노드를 삽입 ---*/
34 void InsertFront(List *list, const Member *x);
35
36 /*--- 꼬리에 노드를 삽입 ---*/
37 void InsertRear(List *list, const Member *x);
38
39 /*--- 머리 노드를 삭제 ---*/
40 void RemoveFront(List *list);
366 C 알고리즘