Page 437 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 437

해시 테이블을 초기화하는 Initialize 함수

                        해시 테이블을 초기화하여 공백(空白)인 해시 테이블을 만드는 함수입니다. 매개변수 size로
                        받는 값은 해시 테이블의 크기입니다. 요소의 자료형이 Node형이고 요소의 개수가 size인
                        배열 table의 본체를 생성하고 매개변수 size로 받은 값을 멤버 size에 복사합니다. 배열
                        table의 모든 요소에 공백 포인터 NULL을 대입했기 때문에 그림 11-6처럼 모든 버킷이 공

                        백 상태가 됩니다.
                           해시 테이블의 각 버킷은 처음부터 순서대로 table[0], table[1], …, table[size – 1]에 접근할 수 있습니다.


                           0   1   2   3    4   5    6   7    8   9    10   11   12

                                             모든 버킷이 널(NULL)입니다.

                                           [그림 11-6] 모든 버킷이 널인 해시



                          실습 11-4[A]                                           •완성 파일 chap11/ChainHash.c
                         01  /* 체인법으로 구현한 해시(소스) */
                         02  #include <stdio.h>
                         03  #include <stdlib.h>
                         04  #include "Member.h"
                         05  #include "ChainHash.h"
                         06
                         07  /*--- 해시 함수(key의 해시 값을 반환) ---*/
                         08  static int hash(int key, int size)
                         09  {
                         10     return key % size;
                         11  }
                         12
                         13  /*--- 노드의 각 멤버에 값을 설정 ----*/
                         14  static void SetNode(Node *n, const Member *x, const Node *next)
                         15  {
                         16     n->data = *x;     /* 데이터 */
                         17     n->next = next;   /* 다음 노드에 대한 포인터 */
                         18  }
                         19
                         20  /*--- 해시 테이블 초기화 ---*/
                         21  int Initialize(ChainHash *h, int size)
                         22  {
                         23     int i;





                                                                                          11•해시  437
   432   433   434   435   436   437   438   439   440   441   442