#include #include #include #define SIZE_KEY 10 #define SIZE_SLOT 5 #define SIZE_BUCKET 30 typedef struct{ char key[SIZE_KEY]; int flag; } Node; Node Hash_Table[SIZE_SLOT][SIZE_BUCKET]; void hashing_division(); int get_key(char buf[]); int hash(int key); void insert_data(int key, char buffer[]); void main() { int num; int i, j; printf("ÇÊ¿äÃʱâÈ­\n"); for(i = 0 ; i < SIZE_BUCKET ; i++) for(j = 0; j < SIZE_SLOT ; j ++) Hash_Table[j][i].flag = 0; printf("ÇØ½Ì ÇÁ·Î±×·¥\n"); printf("1. Á¦»êÇÔ¼ö ½ÇÇà\n"); /*printf("num :"); scanf("%d",&num);*/ hashing_division(); /*switch(num){ case 1: hashing_division(); break; default: printf("À߸øÀÔ·Â\n"); break; }*/ for(i = 0 ; i < SIZE_BUCKET ; i++){ printf("[%d] ", i); //for(j = 0; j < SIZE_SLOT ; j ++){ printf("%s %s %s %s %s ", Hash_Table[0][i].key,Hash_Table[1][i].key,Hash_Table[2][i].key,Hash_Table[3][i].key,Hash_Table[4][i].key); //} printf("\n"); } } void hashing_division() { int index, i; char buffer[SIZE_KEY]; FILE *fStream; fStream = fopen("C_Keyword.txt", "r"); if(fStream == NULL) printf("ÆÄÀÏ ¿­±â ½ÇÆÐ\n"); while(!feof(fStream)){ fgets(buffer,sizeof(buffer),fStream); //printf("%s",buffer); index = get_key(buffer); index = hash(index); insert_data(index, buffer); } fclose(fStream); } int get_key(char buf[]) { int i = 1; char pt = buf[0]; int key = 0; while( pt != '\n'){ key = pt; pt = buf[i]; i++; } return key; } int hash(int key) { return key % 30; } void insert_data(int key, char buffer[]) { int i = 0; while(1){ if(Hash_Table[i][key].flag == 0){ strcpy(Hash_Table[i][key].key, buffer); Hash_Table[i][key].flag++; break; } i++; } }