Page 444 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 444
11 }
12 h->table[i] = NULL;
13 }
14 }
15
16 /*--- 해시 테이블 종료 ---*/
17 void Terminate(ChainHash *h)
18 {
19 Clear(h); /* 모든 데이터 삭제 */
20 free(h->table); /* 해시 테이블 배열의 메모리 해제 */
21 h->size = 0; /* 해시 테이블 크기를 0으로 초기화(clear) */
22 }
모든 데이터를 삭제하는 Clear 함수
해시 테이블에 등록된 모든 데이터를 삭제하는 함수입니다.
우선 배열 표의 모든 요소를 순서대로 검사합니다. 이때 요소가 NULL이 아니면 그 해시 값을
갖는 데이터가 연결 리스트로 존재하므로 연결 리스트를 맨 앞부터 순서대로 검사하면서 리
스트의 모든 노드에 대한 메모리를 해제합니다. 마지막으로 검사 중인 배열 요소에 NULL을
대입합니다. 배열에 대한 모든 검사가 끝나면 모든 버킷이 ‘공백’ 상태가 됩니다.
해시 테이블을 종료하는 Terminate 함수
해시 테이블의 사용을 마칠 때 호출되는 함수입니다. 이 함수는 아래와 같은 과정을 거칩니다.
1. Clear 함수로 해시에 등록한 모든 데이터를 삭제합니다.
2. Initialize 함수로 메모리에 확보한 해시 테이블(table)을 해제합니다.
3. 해시 테이블의 크기를 저장하는 멤버 size를 0으로 초기화합니다.
연습 Q1 실습 11-5의 프로그램은 회원 번호가 키 값입니다. 이름을 키 값으로 설정하여 프로그램
문제 을 작성하세요.
444 C 알고리즘