预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共13页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

****课程设计报告题目:散列表的设计与实现学生姓名:张明超学号:1021111109班级:10211111指导教师:张军、邓薇2012年6月1日目录1.需求分析说明……………………………………12.总体设计…………………………………………13.详细设计…………………………………………34.实现部分…………………………………………35.程序测试…………………………………………96.总结………………………………………………131.需求分析说明:【问题描述】设计散列表实现电话号码查找系统。【基本要求】1)设每个记录有下列数据项:电话号码、用户名、地址;2)从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表;3)采用一定的方法解决冲突;4)查找并显示给定电话号码的记录;5)查找并显示给定用户名的记录。【进一步完成内容】1)系统功能的完善;2)设计不同的散列函数,比较冲突率;3)在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。2.总体设计:就总体上来说,用散列表来实现电话号码查找必须先输入一些电话号码作为数据库,然后可以通过姓名或者号码来查找,每个输入的数据必须包括姓名,地址及号码。具体的步骤如下图所示输入和添加数据保存所添加的数据及选择所需要的功能选择查找所需的数据判断是否存在这些数据存在姓名散列号码散列没有根据姓名输出数据根据号码输出数据3.详细设计:从需要给指定的函数需求创建类,到主函数及界面的功能实现,都必须根据需求分析来做。先给所需要用到的头文件定义以及散列函数用到的关键数key,进而定义输入时的姓名,地址,号码和节点的指针定义,接着定义两个Hash函数,是姓名和号码所要用到的散列排序的函数,其中包括处理地址冲突的关键式子key=key%20.紧接着定义个input函数,为输入节点创建空间,和下面定义的apend函数对应,apend函数是为接下来的节点创建空间。可以创建两个create函数,为后面主函数的清空功能所用,create1用于清空姓名,create2用于清空号码和地址。在创建两个list函数,list1用于列出根据姓名散列的出的结果,list2用于根据号码散列的出的结果。进而创建两个find函数,fand1函数用于根据姓名查找,find2用于根据号码查找。最后定义一个save函数,用于保存数据,和一个menu函数,用于界面的选择。4.实现部分:#include"iostream.h"#include"string.h"#include"fstream.h"#defineNULL0unsignedintkey;unsignedintkey2;int*p;structnodecharname[8],address[20];charnum[11];node*next;};typedefnode*pnode;typedefnode*mingzi;node**phone;node**nam;node*a;voidhash(charnum[11]){inti=3;key=(int)num[2];while(num[i]!=NULL){key+=(int)num[i];i++;}key=key%20;}voidhash2(charname[8]){inti=1;key2=(int)name[0];while(name[i]!=NULL){key2+=(int)name[i];i++;}key2=key2%20;}node*input(){node*temp;temp=newnode;temp->next=NULL;cout<<"输入姓名:"<<endl;cin>>temp->name;cout<<"输入地址:"<<endl;cin>>temp->address;cout<<"输入电话:"<<endl;cin>>temp->num;returntemp;}intapend(){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[key2