Page 442 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 442
0 1 2 3 4 5 6 7 8 9 10 11 12
a
14 29 69 5 6 46
17 20
33
0 1 2 3 4 5 6 7 8 9 10 11 12
b
14 29 69 5 6 46
69를 삭제 17 20
33
[그림 11-8] 체인법에 의한 해시에서의 삭제
실습 11- 4[C] •완성 파일 chap11/ChainHash.c
01 /*--- 데이터 삭제 ---*/
02 int Remove(ChainHash *h, const Member *x)
03 {
04 int key = hash(x->no, h->size); /* 삭제하는 데이터의 해시 값 */
05 Node *p = h->table[key]; /* 현재 선택한 노드 */
06 Node **pp = &h->table[key]; /* 현재 선택한 노드에 대한 포인터 */
07 while(p != NULL) {
08 if(p->data.no == x->no) { /* 찾으면 */
09 *pp = p->next;
10 free(p); /* 해제 */
11 return 0; /* 삭제 성공 */
12 }
13 pp = &p->next;
14 p = p->next; /* 다음 노드를 선택 */
15 }
16 return 1; /* 삭제 실패(존재하지 않음) */
17 }
18
19 /*--- 해시 테이블 덤프 ---*/
442 C 알고리즘