Page 443 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 443
20 void Dump(const ChainHash *h)
21 {
22 int i;
23 for(i = 0; i < h->size; i++) {
24 Node *p = h->table[i];
25 printf("%02d ", i);
26 while(p != NULL) {
27 printf("→ %d :(%s) ", p->data.no, p->data.name);
28 p = p->next;
29 }
30 putchar('\n');
31 }
32 }
33 (실습 11-4[D]에서 계속)
해시 테이블의 내용을 출력하는 Dump 함수
해시 테이블의 내용을 통째로 출력하는 함수입니다. 00
01 → 14
02
해시 테이블의 모든 요소(table[0] ~ table[size – 1])에 대하여 다 03 → 29
04 → 69 → 17
음에 오는 노드를 끌어당기면서 각 노드의 키 값과 데이터를 출 05 → 5
06 → 6
력하는 작업을 반복합니다. 그림 11-8의 a 를 예로 들면 오른 07 → 46 → 20 → 33
08
쪽처럼 출력됩니다. 같은 해시 값을 갖는 데이터는 화살표(→) 09
10
로 연결합니다. 이 함수를 실행하면 같은 해시 값을 갖는 버킷이 11
화살표로 연결된 것을 확인할 수 있습니다. 12
실습 11-4[D] •완성 파일 chap11/ChainHash.c
01 /*--- 모든 데이터 삭제 ---*/
02 void Clear(ChainHash *h)
03 {
04 int i;
05 for(i = 0; i < h->size; i++) {
06 Node *p = h->table[i]; /* 현재 선택한 노드 */
07 while(p != NULL) {
08 Node *next = p->next;
09 free(p); /* 현재 선택한 노드의 메모리 해제 */
10 p = next; /* 다음 노드 선택 */
11•해시 443