《数据结构课程设计》报告。
课题名称: 散列表的设计与实现
专业: 计算机应用技术
班级: 应计1102
学号: 0923110219
姓名。成绩。
1 前言 1
2需求分析 2
3概要设计(特殊功能) 2
4详细设计 2
5源**及调试 3
6特殊问题解决方法 9
7使用说明及测试结果 10
8结论 10
9总结与体会 11
10参考文献 12
人类已经跨入了新世纪,正在进入信息时代。现在信息技术的应用越来越普及,不但促进了社会的高速发展,也改变着人们的工作、学习、生活和娱乐的方式以及思想观念。随着计算机的日益普及 ,计算机软件无处不在。
软件在计算机的发展和应用中至关,在人类进入信息化社会时成为新兴信息产业的支柱,计算机技术的迅速发展,特别是随着网络技术的出现标志着信息时代已经来临。信息化浪潮、网络革命在给社会带来冲击的同时,也使哈希表的应用越来越广泛,传统的查找和服务方式已不能适合现代社会地日益增长的文献信息的需求。随着信息量的不断增加,数据资料的著录和查询的难度也就相应增加。
手工方式已经不能满足要求,如何运用先进的信息技术,提高查找效率和服务水平,是我们面临的一个新的挑战。一直以来人们使用传统的查找方式,效率很低。其次处理能力比较低,一段时间内,所能服务的查询人数是有限的。
哈希表建成无疑会为信息的查询者提供极大的帮助。
1.1 课题简介。
课程设计题目名称:
散列表的设计与实现。
课程设计目的:
这是因为散列表的目的主要是用于快速查找,且插入和删除均要用到查找操作。
课程设计意义:
插入和删除的时间均取决于查找,故下面只分析查找操作的时间性能。虽然散列表在关键字和存储位置之间建立了对应关系,理想情况是无须关键字的比较就可找到待查关键字。但是由于冲突的存在,散列表的查找过程仍是一个和关键字比较的过程。
课程设计内容:
课程设计预期实现效果:
1.2 方案及其论证。
语言:c++
运行环境:microsoft visual c++ 6.0
可行性分析:
设计进度安排:
系统需要满足的要求。
在vc++环境下运行实现该功能。
1) 运行时通过菜单选项选择,并键盘或文件输入各记录(每个记录有下列数据项:用户名、地址、**号码)注:不少于30个,分别以**号码为关键字建立散列表。
2) 采用开放定址的方法解决冲突;
3) 查找并显示给定**号码的记录。
4)查找并显示给定用户名的记录。
对于本次编程的概要设计,有如下内容:
功能设计1:建立哈希表,表中每一个节点包括**号码、用户名、地址和next指针,用于向其中输入信息。
功能设计2:建立哈西函数,有两种,分别是姓名哈希函数和**号码哈希函数。
功能设计3: 解决哈希冲突的方法,这该程序采用的是开放定址法。
功能设计4: 查找函数也有两种:1:以姓名为关键字2 :以**号话为关键字查找。
流程图:#include ""
#include "
#include ""
#define null 0
unsigned int key;
unsigned int key2;
int *p;
struct node建节点。
char name[8],address[20];
char num[11];
node * next;
typedef node* pnode;
typedef node* mingzi;
node **phone;
node **nam;
node *a;
void hash(char num[11哈希函数。
int i = 3;
key=(int)num[2];
while(num[i]!=null)
key+=(int)num[i];
i++;key=key%20;
void hash2(char name[8哈希函数。
int i = 1;
key2=(int)name[0];
while(name[i]!=null)
key2+=(int)name[i];
i++;key2=key2%20;
node* input输入节点。
node *temp;
temp = new node;
temp->next=null;
cout<<"输入姓名:"
cout<<"输入地址:"
cout<<"输入**:"
return temp;
int apend添加节点。
node *newphone;
node *newname;
newphone=input();
newname=newphone;
newphone->next=null;
newname->next=null;
hash(newphone->num);
hash2(newname->name);
newphone->next = phone[key]->next;
phone[key]->next=newphone;
newname->next = nam[key2]->next;
nam[key2]->next=newname;
return 0;
void create新建节点。
int i;
phone=new pnode[20];
for(i=0;i<20;i++)
void create2新建节点。
int i;
nam=new mingzi[20];
for(i=0;i<20;i++)
void list显示列表。
int i;
node *p;
for(i=0;i<20;i++)
void list2显示列表。
int i;
node *p;
for(i=0;i<20;i++)
void find(char num[11查找用户信息。
hash(num);
node *q=phone[key]->next;
while(q!= null)
if(q)
数据结构课程设计报告
东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...
数据结构课程设计报告
设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...
数据结构课程设计报告
河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...