1、1 1 学 号 数据结构课程设计 设计说明书 哈希表设计 起止日期: 2011 年 12 月 12 日 至 2011 年 12 月 16 日 学生姓名 班级 成绩 指 导 教 师 ( 签 字 ) 电子与信息工程电子与信息工程系系 2011 年年 12 月月 16 日日 1 2 课程设计任务书 20112012 学年第学年第 1 学期学期 电子与信息工程 系 软件工程 专业 班级 课程设计名称: 数据结构课程设计 设计题目: 哈希表设计 完成期限:自 2011 年 12 月 12 日至 2011 年 12 月 16 日共 1 周 设计依据、要求及主要内容(可另加附页) : 一、设计目的 熟悉各种
2、数据结构和运算,会使用数据结构的基本操作解决一些实际问题。 二、设计要求 (1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务; (2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄 袭者皆以零分计入本课程设计成绩。凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入 本课程设计成绩; (3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表; (4)认真编写课程设计报告。 三、设计内容 1)问题描述 针对某个集体中人名设计一个哈希表,使得平均查找长度不超过 R,并完成相应的建表和查表 程序。 2)基本要求 假设人名为中国人姓
3、名的汉语拼音形式。待填入哈希表的人名共有 30 个,取平均查找长度的上 限为 2。哈希函数用除留余数法构造,用线性探测再散列法或链地址法处理冲突。 3)测试数据 取读者周围较熟悉的 30 个人名。 四、参考文献 1王红梅数据结构清华大学出版社 2王红梅数据结构学习辅导与实验指导清华大学出版社 3严蔚敏,吴伟民数据结构(C 语言版) 清华大学出版社 1 3 一、需求分析 要建立一个哈希表,并完成查询的功能,首先要定义两个结构体,一个 Name、一个 Hash。 输入的时候一定要输入姓名的拼音,否则将无法实现。 二、问题求解 对哈希表的查询,首先输入要查询人的姓名拼音,然后程序会根据拼音从第一个字
4、母开始 查找并输出其相应的 ASCII 值,依次向后查找,直到字符串结束,最后输出总的 ASCII 码值, 所得 ACSII 值之和作为关键码,然后输出相应的查找长度。例如 输入:xuyanqing 输出: 关 键码:996 查找长度:1 三、总体设计 框图及流程图: 主程序 显 示 哈 希 表 查 找 退 出 开始 查询信息 姓 名 拼 音? 程序对其进 行处理 结果 结束 输入 是 否 输出 1 4 四、详细设计 结构体: struct Name char *py; /姓名拼音 int k; /拼音所对应的 ASCII 码 ; struct Hash char *py; int k; int si; /查找长度 ; void main() 主函数 void ListName() /人名列表 void CreateHashList() /建立 Hash 表 void HashSearch() /查找 void Display() 显示 五、关键源