哈希表制作通讯录数据结构程序设计

上传人:876****10 文档编号:142214022 上传时间:2020-08-17 格式:DOC 页数:22 大小:317.50KB
返回 下载 相关 举报
哈希表制作通讯录数据结构程序设计_第1页
第1页 / 共22页
哈希表制作通讯录数据结构程序设计_第2页
第2页 / 共22页
哈希表制作通讯录数据结构程序设计_第3页
第3页 / 共22页
哈希表制作通讯录数据结构程序设计_第4页
第4页 / 共22页
哈希表制作通讯录数据结构程序设计_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《哈希表制作通讯录数据结构程序设计》由会员分享,可在线阅读,更多相关《哈希表制作通讯录数据结构程序设计(22页珍藏版)》请在金锄头文库上搜索。

1、哈希表制作通讯录-数据结构程序设计 作者: 日期: 软 件 学 院课程设计报告书课程名称 数据结构 设计题目 哈希表制作通讯录 专业班级 学 号 姓 名 指导教师 2014年 1月目录1 设计时间12 设计目的13设计任务14 设计内容14.1需求分析14.11程序所能达到的功能14.12输入的形式和输入的范围14.2总体设计14.21说明本程序中用到的所有抽象数据类型的定义14.22说明主程序的流程24.23说明各程序模块之间的层次(调用)关系34.3详细设计34.31实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法34.32对主程序和其它主要函数写出伪码算法44.4测试54.

2、5 附录65 总结与展望16参考文献18成绩评定181 设计时间2014年1月13日到2014年1月15号2 设计目的 要求学生掌握数据结构的应用、算法的编写、类C语言的算法转换成C程序并上机调试的基本方法。这对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。3设计任务针对你所在班集体中的“人名”,设计一个哈希表,使得平均查找长度不超过R,完成相应的建表和查找过程。4 设计内容 (1)每个人的信息至少包括姓名,电话,地址。至少包括对通讯录的创建,添加和按姓名查找等功能。(2)假设人名为汉语拼音全拼形式,待插入哈希表的长度为你所在班级的人数。哈希函数用除留余数法构造

3、,采用链地址法或二次探测再散列法解决冲突。(3)完成菜单设计。操作有必要的提示。4.1需求分析4.11程序所能达到的功能 以人命的汉语拼音全拼形式查找你所在班级的人的信息(姓名,电话,地址)4.12输入的形式和输入的范围 把人名都到转换成汉语拼音全拼的形式,人命最大长度不超过20个字符4.2总体设计4.21说明本程序中用到的所有抽象数据类型的定义该程序采用的是结构体类型来处理学生的所有基本信息,如下所述。typedef struct /*用结构体类型来处理学生的所有基本信息*/NA name; /*NA为typedef定义的字符数组类型*/Record;typedef struct /*哈希表

4、*/Record *elemHASHSIZE; /数据元素存储基址int count; /当前存储的数据元素个数int size; /当前容量,即表长HashTable;4.22说明主程序的流程mainmenu_selectenterddeletelistsearchsavesaveloadexitinputs insertfinddisplay 文件函数之间的相互调用4.23说明各程序模块之间的层次(调用)关系各函数模块之间的调用关系主要是主函数调用主要功能函数,即:输入与保存函数、哈希表建立函数、查找信息函数,主要功能函数也会调用一些基本功能函数完成相应功能,如:CreateHash()会

5、调用Hash()来求哈希地址,而Hash()会调用fold()对关键字先进行折叠处理,当地址冲突时,Hash()又会调用collision()解决冲突;SearchHash()也会调用Hash()、fold()、collision()以及eq()。并且主函数利用while循环使各个功能函数运行完毕后都会回到菜单,询问是否继续进行操作。4.3详细设计4.31实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法void main() start = last = NULL; for(;) /*无限循环*/ switch(menu_select() /*调用主界面的选择函数,带回返回值*/

6、 case 1:enter(); continue; case 2:ddelete(&start,&last); continue; case 3:list(); continue; case 4:search(); continue; case 5:save(); continue; case 6:load(); continue; case 7:exit(0); int menu_select(void) /*主目录*/ char s80; int c;printf(欢迎使用DOS通讯录系统n);printf(*请在做其它操作前先导入*n);printf(*n); printf(* 1.输

7、入信息 *n); printf(* 2.删除信息 *n); printf(* 3.显示信息 *n); printf(* 4.查找 *n); printf(* 5.存盘 *n); printf(* 6.导入 *n); printf(* 7.退出 *n); printf(*n); do printf(nPlease enter your choice:n); gets(s); c = atoi(s); /*将获取的字符串转换成整型*/while(c7); return c; /*返回输入值*/4.32对主程序和其它主要函数写出伪码算法struct address *info; /*定义当前结点*/

8、for(;) info=(struct address *)malloc(sizeof(struct address); /*为当前结点分配空间*/ if(!info) printf(n Out of memory); exit(0); /*如果分配空间失败,退出程序*/ printf(输入空姓名结束:n); inputs(请输入 姓名:,info-name,10); if(!info-name0)break; /*如果输入姓名为空,结束循环*/ inputs(请输入 街道:,info-street,50); inputs(请输入 城市:,info-city,15); inputs(请输入 国

9、家:,info-state,15); inputs(请输入 电话:,info-tel,7);insert(info,&start,&last); /*调用结点插入函数*/4.4测试图4-1 程序运行图图4-2输入信息图图4-3显示信息4.5 附录#include#include#includestruct address /*定义结构*/ char name10; char street50; char city10; char state15; char tel7; struct address *next; /*后继指针*/ struct address *prior; /*前驱指针*/;

10、struct address *start; /*首结点*/struct address *last; /*尾结点*/struct address *find(char *); /*声明查找函数*/void enter(); /*函数声明*/void search();void save(); void load();void list();void ddelete(struct address *start,struct address *last);void insert(struct address *i,struct address *start, struct address *last);void inputs(char *,ch

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号