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 알고리즘
   451   452   453   454   455   456   457   458   459   460   461