C语言中如何深入理解并高效运用哈希表数据结构?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2223个文字,预计阅读时间需要9分钟。
目录 + 实现 + 散列函数 + 开散列方法 + 闭散列方法(地址方法) + 删除* + 实现 + 哈希表,即散列表,可快速地本地存储和查询记录。哈希表的存储和查询时间都是 O(1)。本《资料》中,哈希表分为。
目录
- 实现
- 散列函数
- 开散列方法
- 闭散列方法(开地址方法)
- 删除*
实现
哈希表,即散列表,可以快速地存储和查询记录。理想哈希表的存储和查询时间都是 O(1)。
本《资料》中哈希表分以下几部分:散列函数、存储和查找时的元素定位、存储、查找。删除操作因为不常用,所以只给出思想,不给出代码。
根据实际情况,可选择不同的散列方法。
以下代码假设哈希表不会溢出。
// N表示哈希表长度,是一个素数,M表示额外空间的大小,empty代表“没有元素”。 const int N=9997, M=10000, empty=-1; int a[N]; void init() // 初始化哈希表 { memset(a,empty,sizeof(a)); // 注意,只有empty等于0或-1时才可以这样做! memset(bucket,empty,sizeof(bucket)); memset(first,0,sizeof(first)); } inline int h(int); // 散列函数 int *locate(int, bool); // 用于存储和查找的定位函数,并返回对应位置。 // 如果用于存储,则第二个参数为true,否则为false①。
本文共计2223个文字,预计阅读时间需要9分钟。
目录 + 实现 + 散列函数 + 开散列方法 + 闭散列方法(地址方法) + 删除* + 实现 + 哈希表,即散列表,可快速地本地存储和查询记录。哈希表的存储和查询时间都是 O(1)。本《资料》中,哈希表分为。
目录
- 实现
- 散列函数
- 开散列方法
- 闭散列方法(开地址方法)
- 删除*
实现
哈希表,即散列表,可以快速地存储和查询记录。理想哈希表的存储和查询时间都是 O(1)。
本《资料》中哈希表分以下几部分:散列函数、存储和查找时的元素定位、存储、查找。删除操作因为不常用,所以只给出思想,不给出代码。
根据实际情况,可选择不同的散列方法。
以下代码假设哈希表不会溢出。
// N表示哈希表长度,是一个素数,M表示额外空间的大小,empty代表“没有元素”。 const int N=9997, M=10000, empty=-1; int a[N]; void init() // 初始化哈希表 { memset(a,empty,sizeof(a)); // 注意,只有empty等于0或-1时才可以这样做! memset(bucket,empty,sizeof(bucket)); memset(first,0,sizeof(first)); } inline int h(int); // 散列函数 int *locate(int, bool); // 用于存储和查找的定位函数,并返回对应位置。 // 如果用于存储,则第二个参数为true,否则为false①。

