课程设计报告书。
题目。班级: 1091211
学号: 1109121106
姓名。指导教师。
周期: 2011-12-19至2011-12-23
以下由验收老师填写
成绩。年月日。
一、课程设计的目的与要求
一)课程设计目的与任务。
通过课程设计,巩固加深对线性表、栈、队列等理论知识的理解;掌握现实复杂问题的分析建模和解决方法、掌握包括问题描述、系统分析、、设计建模、**实现、结果分析等的演绎法提高利用计算机分析解决综合性实际问题的基本能力;个人动手能力;历练自身素质。哈希表实现**号码查询系统是利用哈希表实现**系统的快速查询,程序实现哈希表建表和查表。掌握哈希表的工作原理,熟悉建立哈希表、对哈希表冲突处理、哈希表查找等功能的实现,回顾文件读取、写入,回顾随机函数的作用。
二)题目要求。
1)设每个记录有一列数据项:**号码、用户名、地址。
2)从键盘输入各记录,分别以**号码和用户名为关键字建立哈希表;
3)采用再哈希法解决冲突。
4)查找并显示给定**号码的记录;
5)查找并显示给定用户名的记录。
二、设计正文。
1 系统分析。
要添加用户信息,即要有实现添加结点的功能的函数,所以要设计一个必须包括一个输入结点信息、添加结点的函数;建立以用户名为关键字的哈希表并采用再哈希法解决冲突;建立以**号码为关键字的哈希表并采用再哈希法解决冲突;要实现查找函数,则必须包括一个查找结点的函数;另外还有一个必不可少的就是运行之后要有一个主菜单,即要设计一个主函数。
2 功能详细描述及框图。
1)void getin(record* a键盘输入各人的信息。
2)void showinformation(record* a) /显示输入的用户信息。
3)status collision(int p,int &c)//无法解决冲突,跳入下一循环。
h->elem[pp]=&a[i]);求得哈希地址,将信息存入。
h->count++;
printf("第%d个记录冲突次数为%d。",i+1,c);/需要显示冲突次数时输出。
printf("建表完成!此哈希表容量为%d,当前表内存储的记录个数为%d.",hashsize,h->count);
bengettime();
3)查找并显示给定用户名的记录。
void searchhash1(hashtable* h,int &c){/在通讯录里查找姓名关键字,若查找成功,显示信息。
c用来记录冲突次数,查找成功时显示冲突次数。
bengettime();
na str;
printf("请输入要查找记录的姓名:");
scanf("%s",str);
int p,pp;
p=hash1(str);
pp=p;while((h->elem[pp]!=null)&&eq(str,h->elem[pp]->name)==1))
pp=collision(p,c);
if(h->elem[pp]!=null&&eq(str,h->elem[pp]->name)==1){
printf("查找成功!查找过程冲突次数为%d.以下是您需要要查找的信息:",c);
printf("姓名:%s**号码:%s联系地址:%s",h->elem[pp]->name,h->elem[pp]->tel,h->elem[pp]->add);
else printf("此人不存在,查找不成功!");
bengettime();
void bengettime(){
systemtime sys;
getlocaltime( &sys );
printf( "4d/%02d/%02d %02d:%02d:%02d.%03d ",
5、界面设计。
6、系统测试。
1)添加用户信息。
2)以姓名建立哈希表(再哈希法解决冲突)
3)查找并显示给定用户名的记录。
三、小组成员分工说明。
独立完成系统分析,系统编程,撰写报告。
四、课程设计总结或结论。
1 课程设计过程**现的技术难点和解决方法:
难点:用再哈希法解决冲突和用平方探测解决冲突。
解决方法:看教科书了解其基本思想,上网查了有关解决冲突的**,模仿修改使其完善程序。
2 课程设计期间的主要收获:
使我们巩固了原有的理论知识,培养了我们灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力。使我们体会到自身知识和能力能在实际中的应用和发挥。不但可能激发创新意识,还可以开发创造能力,培养沟通能力。
虽然这次数据结构课程设计的时间有限但确实使我受益非浅。通过实践课程设计我丰富了编译工具操作经验,更加深了对c++语言的了解,熟悉了其环境,更增强了哈希表多种算法的使用技巧。
数据结构与算法
本章知识要点 算法的基本概念 数据结构的定义 线性表的定义和存储 树 二叉树的定义和存储 查找与排序算法。算法 algorithm 是一组有穷的规则,规定了解决某一特定类型问题的一系列运算,是对解题方 与完整的描述。算法是解题的步骤,可以把算法定义成解一确定类问题的任意一种特殊的方法。在计算机科学中...
算法与数据结构
学院专业姓名学号。实验1 线性表的操作 12学时 问题描述 假设一个班级内有n个学生,定义一个学生类和一个班级类。学生类中包括学号 姓名 性别 年龄 专业等属性 班级类包括一个学生对象链表。定义如下 class student class myclass student stu head 链表表头指...
算法与数据结构
1 简述算法的概念及其五个重要特性。2 下图是用邻接表存储的图,请画出此图,写出其邻接矩阵以及从c点开始分别按广度优先搜索和深度优先搜索遍历该图的结果。给定一棵用二叉链表表示的二叉树,其根指针为root,编写求此二叉树叶结点个数的算法,要求先写出二叉链表的类型定义。2.编写简单选择排序的算法。1 用...