哈希表模版(链地址表示法)

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值