알고리즘2009. 9. 16. 23:46

/* 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
Posted by 멍충한아싸

댓글을 달아 주세요