Hash-----开链法

设元素的关键码为37、25、14、36、49、68、57、11。哈希哈数Hash(x)=x%11。
Hash(37)=4;
Hash(25)=3;
Hash(14)=3;
Hash(36)=3;
Hash(49)=5;
Hash(68)=2;
Hash(57)=2;
Hash(11)=0;
这里写图片描述
代码如下:
HashBuckt.h

#pragma once
#include<stdio.h>
#include<stdlib.h>
//开散列法又叫链地址法(开链法):首先对关键码集合用散列函数计算散列地址,
//具有相同地址的关键码归于同一集合,每一集合称为一个桶,每个桶中的元素通过一个单链表链接起来
//各链表的头结点存储在哈希表中。

typedef int HTKeyType;
//typedef int HTVauleType;

typedef struct HashNode//链表
{
    HTKeyType _key;
    //HTVauleType _vaule;
    struct HashNode *_next;
}HashNode;

typedef struct HashTable
{
    HashNode **_tables;//指针数组
    size_t size;//数组里有效数据个数
    size_t _capacity;//数组容量
}HashTable;

void HashTableInit(HashTable *ht, size_t capacity);//初始化
void HashDestory(HashTable *ht);//销毁
int HashInsert(HashTable *ht, HTKeyType key);//插入
void CheckCapacity(HashTable *ht);//检查容量
int  HashFunc(HashTable * ht, HTKeyType key);//哈希函数
int  GetNextPrime(HashTable *ht);//找到下一个素数表大小
HashNode *HashFind(HashTable *ht, HTKeyType key);//查找
int HashRemove(HashTable *ht, HTKeyType key);//删除
void HashPrint(HashTable *ht);//打印
HashNode *BuyHashNode(HTKeyType key);//创建链表结点

HashBuckt.c

#include"HashBuckt.h"
#include<assert.h><
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值