数据结构的一道题目:
设有一组关键字{12,11,35,25,22,58},采用哈希函数:H(key)=key%6,采用开放
地址法的二次探测再哈希方法解决冲突,试在0~10的哈希地址空间中对该关键字序列
构造哈希表。
解法:
依题,m=11,二次探测再哈希的下一地址计算公式为
d1=H(key),
d2=(d1+i*i)%m,
d3=(d1-i*i)%m
其中(i=1,2,3,...)
则有:
H(12)=12%6=0
H(11)=11%6=5
H(35)=35%6=5(冲突)
H(35)=(5+1*1)%11=6
H(25)=25%6=1
H(22)=22%6=4
H(58)=58%6=4(冲突)
H(58)=(4+1*1)%11=5(冲突)
H(58)=(4-1*1)%11=3
对应的构造算法实现:
#include<iostream>
using namespace std;
void CrtHash(int a[],int val,int n1,int n2)
{
int temp=val%n1; //没有冲突
if(a[temp]==0){a[temp]=val;return;}
else //发生冲突
{
int temp1;
for(int j=1;;++j)
{
temp1=(temp+j*j)%n2;
if(a[temp1]==0){a[temp1]=val;return;}
temp1=(temp-j*j)%n2;
if(a[temp1]==0){a[temp1]=val;return;}
}
}
}
int main()
{
int KEY[6]={12,11,35,25,22,58};
int hashtable[11];
memset(hashtable,0,sizeof(hashtable));
for(int i=0;i<6;++i)
{
CrtHash(hashtable,KEY[i],6,11);
}
for(int i=0;i<11;++i)
{
cout<<hashtable[i]<<" ";
}
return 0;
}
分享到:
相关推荐
哈希表算法实现的C语言源程序 数据结构课程设计用
哈希表是一种高效的数据结构,它通过特定的算法——哈希函数,将任意大小的键(key)映射到一个固定大小的数组中,从而实现快速查找、插入和删除操作。在学生管理的场景中,我们可以用哈希表来存储学生的信息,例如...
输入:待哈希数据序列 功能要求:输出哈希方法和解决冲突的方法(文字输出),输出哈希表
合工大数据结构C++实验报告拉链法哈希表查找算法
总结,哈希表查找是一种高效的查找技术,其关键在于设计合理的哈希函数和冲突解决策略。C语言提供了灵活的内存管理和数据结构操作,非常适合实现哈希表。通过理解和掌握哈希表,可以优化很多数据处理任务,提高程序...
在本主题中,我们将深入探讨哈希表的建立和查找过程,以及相关的算法和设计策略。 一、哈希函数的选择与设计 哈希函数是哈希表的核心,它的主要任务是将输入(通常为字符串或整数)转化为数组的索引。一个好的哈希...
了解和掌握哈希表及其哈希算法对于任何程序员来说都是至关重要的,无论你是初学者还是资深开发者,都应该深入理解这一数据结构的工作原理和优化技巧。通过实践和学习,你可以创建出更高效、更适应具体场景的哈希表...
总的来说,哈希表和基于线性表的查找算法是数据结构和算法领域中的重要工具,它们在实际应用中有着广泛的应用,如数据库索引、缓存管理和快速查找等。选择合适的查找方法取决于具体应用场景,例如,如果数据量小且...
哈希表是一种高效的数据结构,它通过特定的函数——哈希函数,将数据映射到一个固定大小的数组中,从而实现快速的插入、查找和删除操作。在C++编程中,哈希表通常被用来解决需要高效查找的问题,比如字典、缓存或者...
总的来说,哈希表查找是计算机科学中一个重要的概念,它通过巧妙地将数据结构和算法相结合,实现了高效的查找操作。理解和掌握哈希表查找不仅有助于提升编程能力,也是优化算法性能的关键。通过不断学习和实践,我们...
在本实验中,我们实现了一个基本的哈希表查找算法。该算法首先根据学生姓名计算哈希值,然后定位到对应的链表,最后遍历链表以找到目标学生信息。 哈希表的应用 在本实验中,我们使用哈希表来存储学生信息,并实现...
该实验报告讲述了哈希表的造表和查找算法的实现。 第一部分:需求分析 根据用户的需求,输入一个顺序表(哈希表),通过除留余数法构造哈希函数,并用开放地址的二次探测再散列解决冲突。在经过排序后显示该哈希表...
第四步:实现查找算法,使用哈希函数将人名转换为哈希值,并在哈希表中查找对应的人名信息。 第五步:实现输入验证,自动识别非法输入,并给与非法输入的反馈信息要求重新输入。 第六步:实现查找结果显示,显示...
哈希表是一种高效的数据结构,它通过特定的哈希函数将键(key)映射到一个固定大小的数组中,以此实现快速的插入、查找和删除操作。在本例中,我们关注的是如何利用链地址法来处理哈希冲突。 哈希函数是哈希表的...
为了实现哈希表,我们需要定义哈希函数、处理冲突的算法和查找算法。 二、哈希函数的设计 哈希函数是哈希表的核心组件,用于将关键字(在本实验中为学生姓名)映射到哈希表的索引上。在本实验中,我们使用除留余数...
在项目中,我们可以在Code::Blocks中编写、运行和测试哈希表的代码,利用其内置的调试工具检查变量的值,查看程序执行的步骤,从而更好地理解算法的运作。 在"hashtab2"这个项目中,开发者可能已经实现了上述功能,...
本文将详细探讨四种常见的查找算法:顺序查找、折半查找、二叉排序树查找以及哈希表查找,并结合提供的"综合查找算法"课程设计项目,解析其在实际应用中的特点和优势。 **顺序查找**是最基础的查找算法,适用于任何...
哈希表是一种高效的数据结构,它通过特定的哈希函数将任意大小的键(key)映射到一个固定范围的数组索引上,从而实现快速的查找、插入和删除操作。在本主题中,我们将深入探讨如何构建哈希表以及如何使用链地址法来...
任务:针对某个集体(比如你所在的班级)中的“姓名”设计一个哈希表,使得平均查找长度不超过R,完成相应的建表和查表程序。 要求:假设人名为中国人姓名的汉语拼音形式。待填入哈希表的人名共有30个,取平均查找长度的...