数据结构课程设计哈希表设计Word文档格式.docx

上传人:b****5 文档编号:21475739 上传时间:2023-01-30 格式:DOCX 页数:15 大小:174.64KB
下载 相关 举报
数据结构课程设计哈希表设计Word文档格式.docx_第1页
第1页 / 共15页
数据结构课程设计哈希表设计Word文档格式.docx_第2页
第2页 / 共15页
数据结构课程设计哈希表设计Word文档格式.docx_第3页
第3页 / 共15页
数据结构课程设计哈希表设计Word文档格式.docx_第4页
第4页 / 共15页
数据结构课程设计哈希表设计Word文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

数据结构课程设计哈希表设计Word文档格式.docx

《数据结构课程设计哈希表设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计哈希表设计Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

数据结构课程设计哈希表设计Word文档格式.docx

char*py;

intk;

}NAME;

NAMENameList[HASH_LEN];

intsi;

}HASH;

2.源代码

#include<

stdio.h>

iostream>

conio.h>

usingnamespacestd;

#defineHASH_LEN50

#defineM47

intNAME_NO=30;

HASHHashList[HASH_LEN];

voidInitNameList()

char*f;

intr,s0,i;

NameList[0].py="

caizenghua"

;

NameList[1].py="

chenjiachuang"

NameList[2].py="

chenquanzhong"

NameList[3].py="

chenxuebin"

NameList[4].py="

chenzhongchao"

NameList[5].py="

chenzifan"

NameList[6].py="

dengchenhua"

NameList[7].py="

duweihao"

NameList[8].py="

fangjiatai"

NameList[9].py="

heguoliang"

NameList[10].py="

hongzexin"

NameList[11].py="

huangjinbiao"

NameList[12].py="

huangliquan"

NameList[13].py="

huangmiaojie"

NameList[14].py="

huangronghao"

NameList[15].py="

huangyonghao"

NameList[16].py="

liguangxi"

NameList[17].py="

lilangzheng"

NameList[18].py="

liangcailin"

NameList[19].py="

linjiewen"

NameList[20].py="

liufurupeng"

NameList[21].py="

liuliang"

NameList[22].py="

luohaoheng"

NameList[23].py="

luowenchao"

NameList[24].py="

sunwenhong"

NameList[25].py="

tanzeming"

NameList[26].py="

wangjian"

NameList[27].py="

wangkaibin"

NameList[28].py="

wangyixin"

NameList[29].py="

wenduke"

for(i=0;

i<

NAME_NO;

i++)

{

s0=0;

f=NameList[i].py;

for(r=0;

*(f+r)!

='

\0'

r++)

s0=*(f+r)+s0;

NameList[i].k=s0;

}

}

voidCreateHashList()

inti;

i<

i++)

HashList[i].py="

"

HashList[i].k=0;

HashList[i].si=0;

}

HASH_LEN;

intsum=0;

intadr=(NameList[i].k)%M;

intd=adr;

if(HashList[adr].si==0)

HashList[adr].k=NameList[i].k;

HashList[adr].py=NameList[i].py;

HashList[adr].si=1;

else

do

d=(d+NameList[i].k%10+1)%M;

sum=sum+1;

}while(HashList[d].k!

=0);

HashList[d].k=NameList[i].k;

HashList[d].py=NameList[i].py;

HashList[d].si=sum+1;

intFindList()

{charname[20]={0};

ints0=0,r,sum=1,adr,d;

printf("

\n请输入人物名称:

);

scanf("

%s"

name);

r<

20;

r++)

s0+=name[r];

adr=s0%M;

d=adr;

if(HashList[adr].k==s0)

\n名称:

%s关键字:

%d查找长度为:

1"

HashList[d].py,s0);

cout<

<

endl;

return0;

elseif(HashList[adr].k==0)

无此记录!

return1;

else

intg=0;

d=(d+s0%10+1)%M;

if(HashList[d].k==0)

"

g=1;

if(HashList[d].k==s0)

{

%d"

HashList[d].py,s0,sum);

}while(g==0);

voidDisplay()

floataverage=0;

for(i=0;

i++)

if(HashList[i].k%M==0)

\n\n地址\t关键字\t\t搜索长度\tH(key)\t名称\n"

%d"

i);

\t%d"

HashList[i].k);

\t\t%d"

HashList[i].si);

HashList[i].k%M);

\t%s"

HashList[i].py);

\n"

average+=HashList[i].si;

average/=NAME_NO;

\n\n平均查找长度:

ASL(%d)=%f\n\n"

NAME_NO,average);

voidDeleteList()

charname[20]={0};

\n请输入人名拼音:

删除成功!

HashList[d].py="

HashList[d].k=0;

HashList[d].si=0;

无法执行删除操作!

已删除成功!

voidEnterList()

charst[20];

char*xin;

xin=st;

ints0=0,r,sum=1,adr,d,h;

\n请输入人名的拼音:

cin>

>

xin;

*(xin+r)!

s0=(int)(*(xin+r))+s0;

已存在于表中,无需插入!

elseif(HashList[d].k==0)

插入成功!

HashList[d].py=xin;

HashList[d].k=s0;

HashList[d].si=1;

h=1;

intg=0,h=0;

HashList[d].si=sum;

if(h==0)

return;

NAME_NO++;

NameList[NAME_NO-1].py=xin;

intadr=(NameList[NAME_NO-1].k)%M;

HashList[adr].k=NameList[NAME_NO-1].k;

HashList[adr].py=NameList[NAME_NO-1].py;

d=(d+NameList[NAME_NO-1].k%10+1)%M;

HashList[d].k=NameList[NAME_NO-1].k;

HashList[d].py=NameList[NAME_NO-1].py;

voidmain()

charch1;

\n哈希表\n"

*-------------------------------------------*\n"

|A.显示哈希表|\n"

|B.查找|\n"

|C.删除|\n"

|D.插入|\n"

|E.退出|\n"

InitNameList();

CreateHashList();

while

(1)

\n请输入执行命令:

fflush(stdin);

ch1=getchar();

if(ch1=='

A'

||ch1=='

a'

Display();

elseif(ch1=='

B'

b'

FindList();

C'

c'

DeleteList();

D'

d'

EnterList();

E'

e'

\n请输入正确的选择!

五.实验使用环境(本实验所使用的平台和相关的软件)

MicrosoftVisualC++6.0

六.测试

程序运行初显示如下:

从中选择需要做的操作,输入对应的操作A、B、C、D、E,并按回车,输入错误时,会显示“无此记录!

”;

正确时,显示姓名,关键字以及查找长度。

程序运行后显示如下:

(1)选择A查找,显示哈希表和平均查找长度,其中平均查找长度小于2,符合题目要求:

(2)选择B查找,输入要查找的人的姓名,若存在则显示名字和对应的关键字以及查找长度;

若不存在则显示无此记录:

(3)选择C删除,输入要删除的人的姓名,然后删除后显示删除成功。

(4)选择D查找,输入要插入的人的姓名,若原先不存在则显示插入成功,若存在则显示已存在表中,无需插入。

(5)选择E退出。

六.实验心得

这段时间的课程设计,我认识到数据结构是一门比较难的课程,需要花很多的时间去练习和实践,要想把这门课程学好学精不是一件容易的事。

这次课程设计的学习,我明白了编写程序的思路是很重要的。

如果你的脑袋里面没有思路,根本就不可能编出好的程序。

在我们编程序之前一定要做好充分的准备,首先要理清自己的思路,然后再将思路分划成几个模块,一块一块的编写,最后再将所有的模块联系起来,组成一个完整的程序。

虽然一开始会有很多错误,但只要理解错误的原因,细心观察细节,理解总体的思路,问题就能迎刃而解。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1