欢迎来到天天文库
浏览记录
ID:4101487
大小:116.50 KB
页数:11页
时间:2017-11-28
《散列表的设计与实现 课程设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、课程设计课程设计名称:数据结构课程设计专业班级:计科06级4班学生姓名:翟鹏飞学号:20064140419指导教师:白浩课程设计时间:2008.6.21-2008.6.27计算机科学专业课程设计任务书学生姓名翟鹏飞专业班级计科0604学号20064140419题目散列表的设计与实现课题性质A.工程设计课题来源D.自拟课题指导教师白浩同组姓名无主要内容设计散列表实现电话号码查找系统。任务要求1) 设每个记录有下列数据项:电话号码、用户名、地址;2) 从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表;3) 采用一定的方法解决冲突;4) 查找并显示
2、给定电话号码的记录;5) 查找并显示给定用户名的记录。参考文献《C语言程序设计》(第三版)谭浩强清华大学出版社出版《数据结构(C语言版)》赵坚、姜梅主编中国水利水电出版社《数据结构(C语言版)》严蔚敏吴伟民清华大学出版社《数据结构与算法》熊岳山刘越电子工业出版社审查意见指导教师签字:教研室主任签字:2008年5月8日1需求分析1) 从键盘输入各记录(每个记录有下列数据项:电话号码、用户名、地址),分别以电话号码和用户名为关键字建立散列表;2) 采用一定的方法解决哈西冲突;3) 查找并显示给定电话号码的记录;4) 查找并显示给定用户名的记录。2概要设计建
3、立哈希表,表中每一个节点包括电话号码、用户名、地址和next指针,用于向其中输入信息。建立哈西函数,有两种,分别为姓名哈希函数(用用户名作为关键字)和电话号码哈希函数(用电话号码作为关键字)。解决哈希冲突的方法有四种,这里采用的是开放定址法。查找函数也有两种1:以姓名为关键字查找;2:以电话号码为关键字查找。大体内容如下:Main函数输入信息apend()姓名散列结果list2()查找电话号码散列结果list()清空信息按号码查询find(num)按姓名查询find2(name退出3运行环境(1)WindowsVista/2003/XP(2)Visua
4、lc++6.04开发工具和编程语言Visualc++6.0C语言5详细设计此部分包括源代码和代码中的注释部分#include"iostream.h"#include"string.h"#include"fstream.h"#defineNULL0unsignedintkey;unsignedintkey2;int*p;structnode//建节点(包括的信息有姓名,地址,电话号码,next指针){charname[8],address[20];charnum[11];node*next;};typedefnode*pnode;typedefnode*
5、mingzi;node**phone;node**nam;node*a;voidhash(charnum[11])//号码哈希函数(以电话号码为关键字){inti=3;key=(int)num[2];while(num[i]!=NULL)//当num[i]不为NULL时{key+=(int)num[i];i++;}key=key%20;//key对20求余}voidhash2(charname[8])//姓名哈希函数(以姓名为关键字){inti=1;key2=(int)name[0];while(name[i]!=NULL)//当num[i]不为NUL
6、L时{key2+=(int)name[i];i++;}key2=key2%20;//key2对20求余}node*input()//作用为输入信息{node*temp;temp=newnode;//temp为node类型temp->next=NULL;cout<<"输入姓名:"<>temp->name;//输入姓名cout<<"输入地址:"<>temp->address;//输入地址cout<<"输入电话:"<>temp->num;//输入电话号码returntemp;//返回temp}int
7、apend()//作用为添加节点{node*newphone;node*newname;newphone=input();//调用输入信息的函数newname=newphone;newphone->next=NULL;newname->next=NULL;hash(newphone->num);//调用以电话号码为关键字的哈西函数hash2(newname->name);//调用以姓名为关键字的哈西函数newphone->next=phone[key]->next;phone[key]->next=newphone;newname->next=nam[
8、key2]->next;nam[key2]->next=newname;return0;}vo
此文档下载收益归作者所有