#include<iostream>
using namespace std;
#define MAXSIZE 17
enum { No, Yes};
typedef struct node
{ //关键字结点
int data; //关键字
struct node *pNext; //指向下一个结点
}Node;
typedef struct Table
{
Node *table; //动态分配哈希表
int count; //哈希表的关键字个数
}HashTable;
void InitHashTable(HashTable &H) //初始化哈希表
{
H.count = MAXSIZE; //初始化哈希表的大小
H.table = new Node[H.count]; //创建哈希表
for (int i = 0; i < H.count; ++i) //初始化哈希表的数据
{
H.table[i].data = No;
H.table[i].pNext = NULL;
}
}
int Hash(int key)
{
return key%MAXSIZE;
}
void InsertHashTable(HashTable &H, int key) //将关键字key插入哈希表
{
int addr = Hash(key);
if (H.table[addr].data == No)
H.table[addr].data = Yes;
Node *pNew = new Node;
pNew->data = key;
pNew->pNext = H.table[addr].pNext;
H.table[addr].pNext = pNew;
pNew = NULL;
}
bool SearchHashTable(HashTable &H, int key) //查找关键字key的值
{
int addr &
数据结构之HashTable(除留余数法—链地址法)
最新推荐文章于 2024-01-13 10:46:25 发布
本文介绍了哈希表的链地址法实现,通过`InitHashTable`初始化哈希表,`Hash`函数计算哈希地址,`InsertHashTable`插入元素,`SearchHashTable`查找元素,最后用`PrintHashTable`打印哈希表内容。通过示例代码展示了如何使用链地址法处理哈希冲突。
摘要由CSDN通过智能技术生成