散列表的设计与实现

散列表的设计与实现

ID:2217526

大小:424.50 KB

页数:35页

时间:2017-11-15

散列表的设计与实现_第1页
散列表的设计与实现_第2页
散列表的设计与实现_第3页
散列表的设计与实现_第4页
散列表的设计与实现_第5页
资源描述:

《散列表的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、*******************实践教学*******************兰州理工大学计算机与通信学院2009年春季学期算法与数据结构课程设计题目:散列表的设计与实现专业班级:软件一班姓名:张建军学号:07240114指导教师:张永成绩:_____________________35目录摘要3前言4正文5采用类c语言定义相关的数据类型5各模块的伪码算法6伪码算法流程图11调试分析12测试结果16源程序(带注释)20总结31参考文献32致谢33附件Ⅰ部分源程序代码3435摘要散列表的设计与实现所涉及到的操作算法都是以链表或顺序表

2、的基本运算作为基础的,此程序通过通讯录实现,包括建立通讯录,添加记录,查询记录,删除记录,显示记录,修改记录。通过顺序表存储结构实现数据的输入,实现各子程序过程的演示,对异常输入信息报错。关键字:新建通讯录,添加记录,查询记录,修改记录,删除记录,显示记录,散列表,散列函数,处理冲突。35前言在各个领域,不同的通讯录其功能都是为用户储存信息,查找信息提供方便的有效工具。一个内容全面、功能先进的通讯录对每个用户来说是一个理想的助手。现在,我们通过对散列表和基本操作的学习和理解,以及在掌握线性表等基本运算的基础上,实现对线性表操作。这里我们

3、所做的通讯录则是在数据结构学习之后,利用计算机c程序语言编写的,可以实现数据的新建通讯录,添加记录,查询记录,修改记录,删除记录,显示记录功能的可执行程序。通过它可以进行对联系对象的姓名、地址、电话号码等的记录与查找。当然,该程序设计也有不足之处,我们一定会不断地努力去更正完善。很多涉及通讯录的操作的算法都是以顺序表操作为基础,通过顺序表的建立,初始化,结点添加、查询与删除的演示,方便在学习中更好的理解顺序表结点的添加、查询、删除的过程。35基本算法的实现采用类c语言定义相关的数据类型1)通讯录结构体的定义如下:typedefstruc

4、tPhoneNode/*结点定义*/{charname[15];//姓名charnumber[15];//电话号码charadd[30];//地址}Pnode,*Ptype;2)会员结构体的定义如下:typedefstruct/*数组存储各记录电话信息的散列地址值*/{charHashName[15];//哈希表1存储姓名}HashTable;3)管理系统结构定义如下:typedefstruct{charHashNum[15];//哈希表2存储电话号码}HashTable2;35各模块的伪码算法打开文件算法:voidopenfile(传

5、入数值I)/*i=1写入打开文件i=2读入打开文件*/{if(I数值为1)fp=fopen("defaultContact.txt","a");//以写方式打开文件if(I数值为2)fp=fopen("defaultContact.txt","r");//以读方式打开文件}初始化散列表算法:voidInitHashTable(HashTableHT[],HashTable2HT2[]){for(inti=0;i

6、HT2[i].HashNum,"");//将哈希表2初始化为空}哈希函数算法:voidhash1(charname[15])/*除留余数法*/{inti=1;unsignedintkey=0;//定义无符号整形,初始化为0key=(int)name[0];while(name[i]!=NULL){key+=(int)name[i];//将名字的每一位累加到keyi++;}key=key%m;//除留余数法建立散列表}整体散列算法:voidsanlie(Pnodetemp[]){inti=0,j=0;while(strcmp(temp

7、[j].name,"")!=0)j++;//计算当前表中name元素的个数35while(i

8、AddsNum[key2].HashNum))key2=(key2+1)%m;//线形探测法处理冲突strcpy(hashAddsNum[key2].HashNum,temp[i].number);//将作

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。