#include <stdio.h>
#include <stdlib.h>
#include <stireg.h>
#define MAX_CHAR 10
#define TABLE_SIZE 13
#define MAX_ITEM 7
typedef struct {
char key[MAX_CHAR];
}element;
element hash_table[TABLE_SIZE];
void init_table(element[]);
int hash(char *);
void linear_insert(element, element[]);
void print_hash(element[]);
void main(){
int i;
element weeks[MAX_ITEM] = { "Sunday", "Monday", "Tuseday", "Wednesday",
"Thursday", "Friday", "Saturday" };
init_table(hash_table);
for (i = 0; i < MAX_ITEM; i++){
linear_insert(weeks[i], hash_table);
}
print_hash(hash_table);
}
void init_table(element ht[]){
int k;
for (k = 0; k < TABLE_SIZE; k++)
ht[k].key = NULL;
}
int hash(char *key){
int number = 0;
while (*key)
number = *key++;
return(number%TABLE_SIZE);
}
void linear_insert(element item, element ht[])
{
int i, hash_value;
hash_value = hash(item.key);
i = hash_value;
while (strlen(ht[i].key)){
if (!strcmp(ht[i].key, item.key)){
fprintf(stderr, "Duplicate entry\n");
exit(1);
}
i = (i + 1) % TABLE_SIZE;
if(i == hash_value){
fprintf(stderr, "The table is full\n");
exit(1);
}
}
ht[i] = item;
}
c언어로 선형 조사법 실습한건데 초기화 에서 배경 빨간색으로 해논곳 한군데가 에러나네요,,
식이 수정할 수 있는 lvalue여야 합니다.라고 에러가나네요
어떻게 고쳐야할까요??보면 linear_insert 함수에서는 에러안나는데 도무지 모르겟네요
말그대로 key가 배열이니까 그런거 아닌가요?_?
ht[k].key[0] = '\0'; 를 의도한 것일까?
헐 백슬래시 제로는 안써지네
해쉬테이블 키값을 초기화해야되는데..백슬래시 제로요??
\0
배열 0번째에 NULL을 넣으라고