Page 456 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 456
62 if(Search(h, x)) /* 이 키는 이미 등록됨 */
63 return 1;
64 for(i = 0; i < h->size; i++) {
65 if(p->stat == Empty || p->stat == Deleted) {
66 SetBucket(p, x, Occupied);
67 return 0;
68 }
69 key = rehash(key, h->size); /* 재해시 */
70 p = &h->table[key];
71 }
72 return 2; /* 해시 테이블이 가득 참 */
73 }
74 (실습 11-7[B]에서 계속)
실습 11-7[B] •완성 파일 chap11/ClosedHash.c
01 /*--- 데이터 삭제 ---*/
02 int Remove(ClosedHash *h, const Member *x)
03 {
04 Bucket *p = Search(h, x);
05 if(p == NULL)
06 return 1; /* 이 키의 값은 존재하지 않습니다. */
07 p->stat = Deleted;
08 return 0;
09 }
10
11 /*--- 해시 테이블 덤프 ---*/
12 void Dump(const ClosedHash *h)
13 {
14 int i;
15 for(i = 0; i < h->size; i++) {
16 printf("%02d : ", i);
17 switch(h->table[i].stat) {
18 case Occupied : printf("%d(%s)\n",
19 h->table[i].data.no, h->table[i].data.name); break;
20 case Empty : printf("-- 미등록 --\n"); break;
21 case Deleted : printf("-- 삭제 마침 --\n"); break;
22 }
23 }
24 }
456 C 알고리즘