1、 数据结构课程设计数据结构课程设计 题题 目目 哈希表设计哈希表设计_ 学学 院院 计算机学院计算机学院 专专 业业 网络工程网络工程 年级班别年级班别 1111 级(级(3 3)班)班 学学 号号 学生姓名学生姓名 指导教师指导教师 思路 理论 答辩 难度系数 代码 总成绩 2013 年年 6 月月 28 日日 序号:序号: 一、一、需求分析需求分析 1.任务和要求任务和要求 (1) 针对某个集体中的人名设计一个哈希表,使得平均查找长度不超过 R,完成 相应的建立和查表程序。 ( 2 ) 人 名 为 汉 语 拼 音 形 式 , 最 长 不 超 过19个 字 符 ( 如 : 庄 双 双 zhu
2、angshuangshuang)。 (3) 假设待填入哈希表的人名有 30 个,平均查找长度的上限为 2。哈希表用除留 余数法构造,用伪随机探测在散列法处理冲突。 (4) 在输入人名过程中能自动识别非法输入,并给与非法输入的反馈信息要求重 新输入。 (5)查找成功时,显示姓名及关键字,并计算和输出查找成功的平均查找长度 2.2.运行环境运行环境 (1)WINDOW7 系统 (2)Visual Studio 2012 编译环境 3.3.开发工具开发工具 C+语言 二、二、概要设计概要设计 1.1.设计思路设计思路 (1)创建姓名表和哈希表的结构 (2)姓名(结构体数组)初始化 1用除留余数法构件
3、哈希函数 2用伪随机探测再散列法处理冲突 (3)查找哈希表:在哈希表中进行查找,输出查找的结果和关键字,并输出查找成功的 平均查找长度。 (4)显示哈希表 2.2.主要数据结构和函数主要数据结构和函数 定义结构体 typedef struct HashList 创建哈希表 定义函数 InitNameList()来对哈希表初始化 定义函数 CreateHashList()建立哈希表 定义函数 DisplayNamelist()显示姓名表 定义函数 DisplayHashList()显示哈希表 定义函数 FindName()查找输入的名字 定义主函数 main()来设计界面和输出 三、详细设计三、
4、详细设计 1.存储结构设计存储结构设计 typedef struct /姓名表 char *py; /名字的拼音 int m; /拼音所对应的 NAME; NAME NameListHASH_LEN; /全局定义姓名表 typedef struct /哈希表 char *py; /名字的拼音 int m; /拼音所对应的ASCII总和 int si; /查找长度 HASH; 2.2.主要算法主要算法 (1 1)姓名(结构体数组)初始化)姓名(结构体数组)初始化 名字以拼音的形式够成字符串,将字符串的各个字符所对应的 ASCII 码相加,所得 的整数做为哈希表的关键字。 /*-姓名(结构体数组)
5、初始化-*/ void InitNameList() char *f; int r,s0,i; NameList0.py=“caizhilong“;/蔡志龙 NameList1.py=“zengxiangjie“;/曾祥杰 NameList2.py=“zengzhikun“;/曾志坤 NameList3.py=“zengzhipeng“;/曾志鹏 NameList4.py=“chenjunhao“;/陈俊豪 NameList5.py=“chenqiwei“;/陈启伟 NameList6.py=“chenxiaocong“;/陈晓聪 NameList7.py=“chenzhaolong“;/陈兆龙 NameList8.py=“dingyue“;/丁越 NameList9.py=“dujingzhou“;/杜径舟 NameList10.py=“duxinjie“;/杜信杰 NameList11.py=“heyongjie“;/何勇杰 NameList12.py=“houzhengzhi“;/候正之 NameList13.py=“huangjinling“;/黄锦玲 NameList14.py=“huangjin“;/黄劲 NameList