散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中
一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,
函数f(key)为哈希(Hash) 函数。
哈希表就是一维数组,数组元素是一个结构体
:结构体有一个节点指针元素,可以有一个数据域,也可以有多个数据域,也可以没有
简单的说
哈希表:hash_table = 顺序结构+链式结构
冲突: 元素x、y、z 分别 % 上 P(默认哈希表长度)后相等,即应该存放在相同下标下
解决办法:把y插入到一个节点中,该节点悬挂到下标为x%P的数组元素下面,z悬挂到y下面。
//下面给出哈希表的实现、插入以及打印代码:
#include<iostream>
using namespace std;
#define P 7 // 哈希表默认表长
#define $ -1 // 默认初始化的值
#define ElemType int // 值类型
typedef struct bucket_node // 节点类型
{
ElemType data[3];
struct bucket_node *next; // 每