散列法的实验研究课程设计报告Word文档下载推荐.docx
- 文档编号:21245125
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:8
- 大小:16.12KB
散列法的实验研究课程设计报告Word文档下载推荐.docx
《散列法的实验研究课程设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《散列法的实验研究课程设计报告Word文档下载推荐.docx(8页珍藏版)》请在冰豆网上搜索。
用线性再散列方法建立哈希表,用代码实现为:
typedefstruct
{
intkey;
intsi;
}HashTable1;
voidCreateHashTable1(HashTable1*H,int*a,intnum)//哈希表线性探测在散列;
inti,d,cnt;
for(i=0;
i<
HashSize;
i++)
H[i].key=0;
H[i].si=0;
}
num;
cnt=1;
d=a[i]%HashSize;
if(H[d].key==0)
H[d].key=a[i];
H[d].si=cnt;
else
do
d=(d+1)%HashSize;
cnt++;
}while(H[d].key!
=0);
printf("
\n线性再探索哈希表已建成!
"
);
用二次探测再散列建立哈希表,代码实现如下:
voidCreateHash3(HashTable3*h,int*a,intnum)//二次探索表
inti,p=-1,c,pp;
c=0;
p=a[i]%HashSize;
pp=p;
while(h->
elem[pp]!
=NULL)
pp=Collision(p,c);
if(pp<
0)
第%d个记录无法解决冲突\n"
i+1);
continue;
h->
elem[pp]=&
(a[a[i]]);
count++;
第%d个记录冲突次数为%d\n"
i+1,c);
\n建表完成!
\n此哈希表容量为%d,当前表内存储的记录个数%d.\n"
HashSize,h->
count);
二次探测再散列法解决冲突
intCollision(intp,int&
c)
inti,q;
i=c/2+1;
while(i<
HashSize)
if(c%2==0)
c++;
q=(p+i*i)%HashSize;
if(q>
=0)
returnq;
q=(p-i*i)%HashSize;
=0)returnq;
elsei=c/2+1;
return(-1);
用线性再散列法查找,代码实现如下:
voidSearchHash1(HashTable1*h,intdata)
intd;
d=data%HashSize;
if(h[d].key==data)
数字%d的探查次数为:
%d\n"
h[d].key,h[d].si);
while(h[d].key!
=data&
&
d<
HashSize);
if(d<
没有查找到你所输入的数\n"
用二次探测再散列法查找
voidSearchHash2(HashTable2*h[],intdata,intnum)
Node*q;
d=data%num;
q=h[d]->
link;
while(q->
key!
q->
next!
q=q->
next;
if(q->
数字%d的查找次数为:
q->
key,q->
next);
没有找到你要查找的那个数\n"
用链地址法查找,代码实现如下:
voidCreateHashTable2(HashTable2*ht[],int*a,intnum)//哈希表链地址;
Node*s,*q;
i++)
ht[i]=(HashTable2*)malloc(Sizeof(HashTable2));
ht[i]->
link=NULL;
s=(Node*)malloc(sizeof(Node));
s->
key=a[i];
next=NULL;
d=a[i]%num;
if(ht[d]->
link==NULL)
ht[d]->
link=s;
si=cnt;
q=ht[d]->
q->
next=s;
c.详细设计
(1)程序中结构体的定义
typedefstructnode
structnode*next;
}Node;
Node*link;
}HashTable2;
typedefstruct
int*elem[HashSize];
intcount;
intsize;
}HashTable3;
(2)主函数模块
voidmain()
intdata;
HashTable1hash1[HashSize];
HashTable2*hash2[HashSize];
HashTable3*ha;
ha=(HashTable3*)malloc(sizeof(HashTable3));
for(inti=0;
ha->
elem[i]=NULL;
count=0;
size=HashSize;
inta[MaxSize];
while
(1)
\n
┏━━━━━━━━━━━━━━━┓"
┃
欢迎使用本系统
┃"
\n┏〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓┓"
\n┃★★★★★★散列法的实验研究★★★★★★┃"
\n┃【1】.添加数据信息
【2】数据的输出
┃"
\n┃
【3】.建立哈希表(线性再散列)
【4】.建立哈希表(二次探测再散列)
【5】.建立哈希表(链地址法)
【6】.线性再散列法查找
【7】.二次探测再散列法查找
【8】.链地址法查找
【0】.退出程序
\n┗〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓┛"
\n"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 散列法 实验 研究 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)