/* in file main.c */
#include <stdio.h>
#include "hash.h"
#define SIZE 5
int main(void)
{
int i;
void** arr;
arr = make_arr(SIZE);
//-------------------------------
input_data("123",SIZE,arr);
input_data("223",SIZE,arr);
input_data("323",SIZE,arr);
input_data("423",SIZE,arr);
//-------------------------------
print_all(arr,SIZE);
for(i=0; i<SIZE; i++)
{
if (arr[i] != 0)
{
kill_list(arr[i]);
}
}
kill_arr(arr);
return 0;
}
이 결과는 여기 해시 함수가 아주 단순하기 때문이다.
int hash(char* str,int size)
{
return str[0]%size;
}
즉 문자열의 첫번째 문자의 아스키값을
배열 사이즈로 나눈 나머지 값 (배열의 인덱스로 생각할수 있는 값)
인데 만약 첫번째 문자가 모두 같다면 모든 원소가 충돌이 일어나
리스트로 묶이고 결국 링크드리스트나 다를바 없게 된다.
해시테이블은 해시함수의 선택이 중요한것 같다.
다른 해시함수 테스트 해볼 예정
'알고리즘' 카테고리의 다른 글
BST (func) (0) | 2009.09.16 |
---|---|
binary search tree (concept) (0) | 2009.09.16 |
hash_chain (평가) (0) | 2009.09.16 |
hash_chain (func) (0) | 2009.09.16 |
Chaining (concept) (0) | 2009.09.16 |
merge_sort2 (평가) (0) | 2009.09.16 |
댓글을 달아 주세요