散列表的设计与实现报告.docx
- 文档编号:27446038
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:17
- 大小:153.02KB
散列表的设计与实现报告.docx
《散列表的设计与实现报告.docx》由会员分享,可在线阅读,更多相关《散列表的设计与实现报告.docx(17页珍藏版)》请在冰豆网上搜索。
散列表的设计与实现报告
数据结构课程设计
题目:
散列表的设计与实现
专业:
计算机科学与技术
指导教师:
李竹林
姓名:
刘朋飞(14)
何伟(12)
一、需求分析:
1.任务需求:
设计散列表实现电话号码查找系统;
2.功能需求:
.设每个记录有下列数据项:
电话号码、用户名、地址;
.从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表;
.采用一定的方法解决冲突;
.查找并显示给定电话号码的记录;
.查找并显示给定用户名的记录;
3.其他功能:
.系统功能的完善;
.设计不同的散列函数,比较冲突率;
.在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化;
二、总体设计:
1.系统功能设计:
定义电话本记录数量(MAXSIZE)、表长(HASHSIZE)、姓名长度(MAX_SIZE)以和结构体typedefstruct的内容,构造两个哈希函数hash1和hash2。
功能示意图:
2.系统功能设计:
增加系统功能如下:
添加用户信息;读取所有用户信息;以姓名建立哈希表;以电话号码建立哈希表;查找并显示给定用户名的记录;查找并显示给定电话号码的记录;清屏以和保存功能;
处理流程示意图:
3.功能模块设计:
.运用main函数输出电话本信息系统的整体界面,在调试运行后如下:
.利用添加功能voidgetin(Record*a)实现用户信息的录入,在调试运行后如下:
.利用哈希函数CREATEHASH1.2来构造哈希表并用Statuscollision函数的相应功能来查找并解决冲突:
.利用voidSearchHash1(HashTable*H,int&c)在通讯录里查找姓名关键字,若查找成功,显示信息,c用来记录冲突次数,查找成功时显示冲突次数:
三、详细设计与实现部分:
定义头文件和基本属性
#include
#include
#include
#include
#include
#defineMAXSIZE20//电话薄记录数量
#defineMAX_SIZE20//人名的最大长度
#defineHASHSIZE53//定义表长
#defineSUCCESS1
#defineUNSUCCESS-1
#defineLENsizeof(HashTable)
typedefintStatus;
typedefcharNA[MAX_SIZE];
定义结构体
typedefstruct{//记录
NAname;
NAtel;
NAadd;
}Record;
typedefstruct{//哈希表
Record*elem[HASHSIZE];//数据元素存储基址
intcount;//当前数据元素个数
intsize;//当前容量
}HashTable;
关键字比较功能的实现
Statuseq(NAx,NAy){//关键字比较,相等返回SUCCESS;否则返回UNSUCCESS
if(strcmp(x,y)==0)
returnSUCCESS;
elsereturnUNSUCCESS;
}
记录个数功能的实现
StatusNUM_BER;//记录的个数
输入信息功能
voidgetin(Record*a){//键盘输入各人的信息
cout<<"输入要添加的个数:
\n";
cin>>NUM_BER;
inti;
for(i=0;i cout<<"请输入第"< \n"; cin>>a[i].name; cout<<"请输入第"< \n"; cin>>a[i].tel; cout<<"请输入第"< \n"; cin>>a[i].add;//gets(str2);? ? ? ? ? ? } } 显示输入信息的实现 voidShowInformation(Record*a)//显示输入的用户信息 { inti; for(i=0;i cout<<"\n第"< \n姓名: "<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 列表 设计 实现 报告