数据结构课程设计 题目:散列表的设计与实现 专业:计算机科学与技术 指导教师:*** 姓名:刘朋飞(1 0 6 0 3 0 9 0 1 4 0 0 4 ) 何 伟(1 0 6 0 3 0 9 0 1 4 0 4 2 ) 一、 需求分析: 1.任务需求:设计散列表实现电话号码查找系统; 2.功能需求: ⑴. 设每个记录有下列数据项:电话号码、用户名、地址; ⑵. 从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表; ⑶. 采用一定的方法解决冲突; ⑷. 查找并显示给定电话号码的记录; ⑸. 查找并显示给定用户名的记录; 3.其他功能: ⑴. 系统功能的完善; ⑵. 设计不同的散列函数,比较冲突率; ⑶. 在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化; 二、 总体设计: 1. 系统功能设计: 定义电话本记录数量(MAXSIZE)、表长(HASHSIZE)、姓名长度(MAX_SIZE)以及结构体 typedef struct 的内容,构造两个哈希函数 hash1 和 hash2。 功能示意图: 2. 系统功能设计: 增加系统功能如下: 添加用户信息; 读取所有用户信息; 以姓名建立哈希表;以电话号码建立哈希表; 查找并显示给定用户名的记录; 查找并显示给定电话号码的记录; 清屏以及保存功能; 处理流程示意图: 录入子系统 查询子系统 姓名 地址 号码 姓名查找 号码查询 电话号码管理功能示意图 3. 功能模块设计: ⑴. 运用 main 函数输出电话本信息系统的整体界面,在调试运行后如下: 开始 进入录入系统 获得关键字 key 用 Hash1(key )计算地址 比较 nam_2(d)的值是否和关键字相等 输出记录 用探查序列d+i*hash2(key )计算(寻找)散列地址 结束 比较 nam_Ht(d)的值是否和关键字相等 未找到记录 处理流程图 ⑵. 利用添加功能 void getin(Record* a)实 现 用 户 信息的录入,在调试运行后如下: ⑷.利用哈希函数 CREATEHASH1.2 来构造哈希表并用 Statu s collision 函数的相应功能来查找并解决冲突: ⑸.利用 v oid SearchHash1(HashTable* H,int &c)在通讯录里查找姓名关键字,若查找成功,显示信息,c 用来记录冲突次数,查找成功时显示冲突次数: 三、 详细设计与实现部分: 定 义头文件及基本属性 #include #include #include #include #include #define MAXSIZE 20 //电话薄记录数量 ...