Page 455 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 455
21 {
22 n->data = *x; /* 데이터 */
23 n->stat = stat; /* 요소의 상태 */
24 }
25
26 /*--- 해시 테이블 초기화 ---*/
27 int Initialize(ClosedHash *h, int size)
28 {
29 int i;
30 if((h->table = calloc(size, sizeof(Bucket))) == NULL) {
31 h->size = 0;
32 return 0;
33 }
34 h->size = size;
35 for(i = 0; i < size; i++) /* 모든 버킷을 */
36 h->table[i].stat = Empty; /* 공백으로 만듭니다.*/
37 return 1;
38 }
39
40 /*--- 검색 ---*/
41 Bucket *Search(const ClosedHash *h, const Member *x)
42 {
43 int i;
44 int key = hash(x->no, h->size); /* 검색할 데이터의 해시 값 */
45 Bucket *p = &h->table[key]; /* 현재 선택한 노드 */
46 for(i = 0; p->stat != Empty && i < h->size; i++) {
47 if(p->stat == Occupied && p->data.no == x->no)
48 return p;
49 key = rehash(key, h->size); /* 재해시 */
50 p = &h->table[key];
51 }
52 return NULL;
53 }
54
55 /*--- 데이터 추가 ---*/
56 int Add(ClosedHash *h, const Member *x)
57 {
58 int i;
59 int key = hash(x->no, h->size); /* 추가할 데이터의 해시 값 */
60 Bucket *p = &h->table[key]; /* 현재 선택한 노드 */
61
11•해시 455