ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:502.01KB ,
资源ID:7858693      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7858693.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(哈希表《数据结构》课程设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

哈希表《数据结构》课程设计.docx

1、哈希表数据结构课程设计数学与计算机学院课程设计说明书课 程 名 称: 数据结构-课程设计 课 程 代 码: 8404181 题 目: 哈希表的设计与实现 年级/专业/班: 2009级软件工程3班 学 生 姓 名: * 学 号: * 开 始 时 间: 2011 年 06 月 20 日完 成 时 间: 2011 年 06 月 29 日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书撰写质量(45)总 分(100)指导教师签名: 年 月 日数 据 结 构 课 程 设 计 任 务 书学院名称: 数学与计算机学院 课程代码: 8404181 专 业: 软件工程 年 级:

2、 2009级 一、设计题目哈希表的设计与实现二、主要内容设计哈希表实现电话号码查找系统,要求如下:1)设每个记录有下列数据项:电话号码、用户名、地址;2)从键盘输入各记录,分别以电话号码和用户名为关键字建立哈希表(要求设计两种以上不同的散列函数);3)采用两种以上的方法解决冲突;4)查找并显示给定电话号码的记录;5)查找并显示给定用户名的记录。三、具体要求及应提交的材料1每个同学以自己的学号和姓名建一个文件夹,如:“*张三”。里面应包括:学生按照课程设计的具体要求所开发的所有源程序(应该放到一个文件夹中)、任务书和课程设计说明书的电子文档。2打印的课程设计说明书(注意:在封面后夹入打印的“任务

3、书”以后再装订)。四、主要技术路线提示哈希表的操作。构造散列函数的方法较多,常用直接定址法、数字分析法、平方取中法、折叠法、除留余数法等,解决冲突的方法也较多,常用:开放定址法、链地址法等。五、进度安排共计两周时间,建议进度安排如下:选题,应该在上机实验之前完成需求分析、概要设计可分配4学时完成详细设计可分配4学时调试和分析可分配10学时。2学时的机动,可用于答辩及按教师要求修改课程设计说明书。注:只用课内上机时间一般不能完成设计任务,所以需要学生自行安排时间做补充。六、推荐参考资料1苏仕华等编著,数据结构课程设计,机械工业出版社,20072严蔚敏等编著,数据结构(C语言版),清华大学出版社,

4、20033严蔚敏等编著,数据结构题集(C语言版),清华大学出版社,2003指导教师 签名日期 年 月 日系 主 任 审核日期 年 月 日摘 要 分析了对线性表、栈、队列、字符串、树、图、查找、排序等理论知识的应用,对现实复杂问题的分析建模和解决方法!分析了针对系统的需求所要执行的解决方法的可行性,正确性。完成系统前需要进行问题描述、系统分析、设计建模、代码实现、调试修改,结果分析。设计哈希表实现电话号码查询系统是利用哈希表实现电话系统的快速查询,程序实现哈希表建表和查表,并实现对没有查找到的内容进行记录。利用编程实现电话号码查询系统,该系统具有录入联系人的姓名,电话号码,住址信息,查询联系人,

5、保存记录以及清空记录,并且实现利用散列显示联系人信息,包括姓名散列和电话号码散列。关键词:哈希表; 散列; 排序;联系人;电话号码 1需求分析(1)输入的形式和输入值的范围: 数据的输入在屏幕中进行,所输入的数据的格式为:姓名,住址,电话号码。用户使用时显示菜单,用户输入菜单选项完成操作。(2)输出的形式: 查找的结果显示在屏幕上,未被查找到的内容输出相应的提示信息。用户需要时,将哈希表显示在屏幕上。(3)程序所能达到的功能: 根据用户的要求,输入联系人的姓名,电话号码。住址,分别以姓名和电话号码作为关键字生成哈希表。生成哈希表后用户可以根据相应的关键字进行数据的查找,若查找到对应的数据则将数

6、据输出屏幕,若没有查找到对应的数据则将输出提示信息表示未找到联系人。在用户选择哈希表时,显示完整的哈希表。程序使用文字菜单的友好界面,在数据输入时对输入内容进行范围控制。(4)测试数据:在电脑屏幕中输入记录,令程序读入并分别以姓名和电话号码做为关键字生成哈希表,查找记录中原有的记录,查看输出数据,查找记录中没有的记录输出提示信息,查看整个哈希表的数据。清除所有的记录后再次输入信息查询,屏幕输出未查找到的提示信息,若录入新的信息后,可保存信息,查询,散列联系人信息。2开发及运行平台硬件:微型计算机。软件:VC+6.0。具体操作如下:新建工程,添加相应的源文件,再编译,链接,执行!3 概要设计1.

7、数据类型定义结构体类型存储每条记录。struct node /建节点 char name8; /用于存放姓名char address20; /用于存放地址char num11; /用于存放电话号码 node * next; ;2.主程序流程创建存放记录的结构体数组查找记录,分别可选择姓名查询和电话号码查询姓名散列号码散列清空记录保存记录选择退出系统3.各函数功能 int apend(); /添加节点 void create(); /新建电话号码的节点 void create2(); /新建姓名的节点 void find(char num11); /通过电话号码查找用户信息 void find2

8、(char name8); /通过姓名查找用户信息 void hash(char num11); /哈希函数,号码散列 void hash2(char name8); /哈希函数,姓名散列 node* input(); /输入用户信息 void list(); /通过姓名查找显示用户信息 void list2() /通过电话号码查找显示列表4 详细设计4.1数据类型定义 struct node /建节点 char name8,address20; char num11; ; node * next; /定义结构体1.主要算法 /实现添加姓名,电话号码,住址的新的内存空间模块儿 int apen

9、d() node *newphone; node *newname; newphone=input(); newname=newphone; newphone-next=NULL; newname-next=NULL; hash(newphone-num); hash2(newname-name); newphone-next = phonekey-next; phonekey-next=newphone; newname-next = namkey2-next; namkey2-next=newname; return 0; / 新建电话号码节点函数void create() int i;

10、phone=new pnode20; for(i=0;inext=NULL; /新建名字节点函数void create2() int i; nam=new mingzi20; for(i=0;inext=NULL; /通过电话号码查找用户信息函数void find(char num11) hash(num); node *q=phonekey-next; while(q!= NULL) if(strcmp(num,q-num)=0) break; q=q-next; if(q) coutname address numendl; else cout无此记录next; while(q!= NUL

11、L) if(strcmp(name,q-name)=0) break; q=q-next; if(q) coutname address numendl; else cout无此记录next=NULL; cout 请输入姓名:temp-name; cout 请输入地址:temp-address; cout 请输入电话:temp-num; return temp; /显示列表函数,用于显示通过电话号码查找到的用户信息void list() int i; node *p; for(i=0;inext; while(p) coutname address numnext; /显示列表函数,用于显示通

12、过姓名查找到的用户信息void list2() int i; node *p; for(i=0;inext; while(p) coutname address numnext; /菜单函数,实现客户选择菜单进行系统操作void menu() cout= 欢迎进入设计哈希表查询电话号码系统 =endl; coutendl;cout- 0. 添加记录-endl; cout- 1. 查找记录-endl; cout- 2. 姓名散列-endl; cout- 3. 号码散列-endl; cout- 4. 清空记录-endl; cout- 5. 保存记录-endl; cout- 6. 退出系统-endl

13、;coutendl; cout请输入你的选择(0,1,2,3,4,5,6)endl;2.函数流程图图一 哈希函数实现姓名散列图二 哈希函数实现电话号码散列图三 输入函数图四 电话号码节点创建函数图五 姓名节点创建函数图六 通过电话查找显示函数图七 通过姓名查找显示函数图八 姓名查找函数图九 电话号码查找函数图十 保存用户信息函数图十一 主函数5 调试分析内容包括:1.测试环境在Windows 7环境下的Microsoft Visual C+ 6.02.模块调试 写入数据时,对数据的内容的控制需要特别注意。要注意其字符组合模式,比如生成名字是应该只有字幕,生成电话号码是应该只有数字,还要注意生成

14、字符组合的长度限制,比如电话号码应该是11位,这可以在循环语句中进行控制。在哈希含查找时要注意取余的除数的一致,这是哈希表成立的关键点。3.复杂度分析 使用哈希表存储记录,在执行查找是可以快捷的进行查找。选用在哈希法和为随机探测再散列法。程序设定的哈希标长为50,文件数据长度为30,则哈希表的填装因子为0.6,则查找成功时的平均查找长度为Snr-In(1-0.6)6 测试结果1.添加记录2.查找记录3.查找记录4.姓名散列5.电话号码散列6.清空记录7.保存记录8.退出系统7 结论数据结构课程设计和现代计算机技术的实际应用相结合,是我们在本阶段学完理论课程之后对自己该方面的能力的一次很好的检验

15、,从开始的算法思路到运行调试后的美观的用户界面以及可用程序,都是一个很好的学习和锻炼的过程。使我们巩固了原有的理论知识,培养了我们灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力。 但是在编写程序的过程中遇到了很多的困难,先是设计整个程序的思路,算法,以及模块儿,由于对课程以及相关知识的一定欠缺,不能很顺利的完成这项工作,再有就是写代码的过程中出现很多语法错误和逻辑错误,通过编译调试找到错误并修改。这次数据结构课程设计的时间里虽然时间有限,但确实使我受益非浅。通过实践课程设计我丰富了编译工具操作经验,更加深了对C+语言的了解,熟悉了其环境,更增强了哈希表等对多种算法的使用技巧。总之,数据结构课程设计让我受益良多,我会好好珍惜像这种难得的机会,努力学习知识。参考文献1苏仕华等编著,数据结构课程设计,北京:机械工业出版社,20072严蔚敏等编著,数据结构(C语言版),北京:清华大学出版社,20033严蔚敏等编著,数据结构题集(C语言版),北京:清华大学出版社,2003

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

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