#define NODE_NUMBER 10000001
#define MOD 7
struct hash
{
int key;
struct hash * next;
hash() { next = NULL; }
} * ht[NODE_NUMBER];
int hash_insert(int k)
{
int key = k % MOD;
if (ht[key] == NULL) {
hash * tmp = new hash;
tmp->key = k;
ht[key] = tmp;
} else {
hash * tmp = ht[key];
int flag = 0;
while (tmp->next != NULL) {
if (tmp->key == k) {
flag = 1;
break;
}
tmp = tmp->next;
}
if (tmp->key == k) {
flag = 1;
}
if (flag == 0) {
hash * t = new hash;
t->key = k;
tmp->next = t;
}else {
return 1;
}
}
return 0;
}
int main()
{
int d[] = {100, 20, 21, 35, 3, 78, 99, 10};
int i;
memset(ht, 0, sizeof(ht));
for (i = 0; i < 8; ++i) {
printf("%d\n", hash_insert(d[i]));
}
for (i = 0; i < 7; ++i) {
hash * tmp = ht[i];
while (tmp != NULL) {
printf("%d ", tmp->key);
tmp = tmp->next;
}
printf("\n");
}
return 0;
}
哈希表模版(链地址表示法)
最新推荐文章于 2024-09-12 19:57:36 发布