数据结构实验报告七查找Word格式.docx
《数据结构实验报告七查找Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告七查找Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
王辉
学号:
154
电子邮件:
完成提交时间:
2010年12月27日
云南大学软件学院2010学年秋季学期
《数据结构实验》成绩考核表
学号:
姓名:
本人承担角色:
评分项目
评分指标
分值
得分
实验构思(10%)
1.实验目的明确
5
2.实验内容理解透彻、对实验所涉及到的知识点分析到位
实验设计(15%)
1.有对基本数据结构的抽象数据类型定义
2.实验方案设计完整,数据结构、算法选择合理
3.算法结构和程序功能模块之间逻辑清晰、有相应的流程图
实验实现(25%)
1.代码编写规范、风格统一、注释清楚易读
2.程序运行正常,测试结果正确
15
3.界面友好、易于操作、有较强的容错性
实验报告撰写(10%)
1.内容详实无缺漏,文字流畅、图表清楚
2.实验结果分析客观、详细,实验体会真实可信,对原实验方案的改进和对实验内容的发散性思考
个人工作量(30%)
1.个人完成工作量
2.个人技术水平
10
3.团队合作精神
实验运作(10%)
1.有一定用户群
2.应用前景分析
综合得分:
(满分100分)
指导教师:
年月日
(注:
此表在难度为C时使用,每个成员一份。
)
(下面的内容由学生填写,格式统一为,字体:
楷体,行距:
固定行距18,字号:
小四,个人报告按下面每一项的百分比打分。
难度A满分70分,难度B满分90分)
一、【实验构思(Conceive)】
(10%)
1哈希表查找。
根据全年级学生的姓名,构造一个哈希表,选择适当的哈希函数和解决冲突的方法,设计并实现插入、删除和查找算法。
熟悉各种查找算法的思想。
2、掌握查找的实现过程。
3、学会在不同情况下运用不同结构和算法求解问题。
4把每个学生的信息放在结构体中:
typedefstruct//记录
{
NAname;
NAtel;
NAadd;
}Record;
5voidgetin(Record*a)函数依次输入学生信息
6人名折叠处理,先将用户名进行折叠处理折叠处理后的数,用除留余数法构造哈希函数,并返回模值。
并采用二次探测再散列法解决冲突。
7姓名以汉语拼音形式,待填入哈希表的人名约30个,自行设计哈希函数,用线性探测再散列法或链地址法处理冲突;
在查找的过程中给出比较的次数。
完成按姓名查询的操作。
将初始班级的通讯录信息存入文件。
二、【实验设计(Design)】
(20%)
(本部分应包括:
抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系)
1抽象数据类型的功能规格说明和结构体:
#include<
stdio.h>
stdlib.h>
string>
#include<
windows.h>
#defineMAXSIZE20//电话薄记录数量
#defineMAX_SIZE20//人名的最大长度
#defineHASHSIZE53//定义表长
#defineSUCCESS1
#defineUNSUCCESS-1
#defineLENsizeof(HashTable)
typedefintStatus;
typedefcharNA[MAX_SIZE];
typedefstruct//记录
typedefstruct//哈希表
Record*elem[HASHSIZE];
//数据元素存储基址
intcount;
//当前数据元素个数
intsize;
//当前容量
}HashTable;
2主函数与各子函数的调用关系:
(通过switch(num)函数按不同功能要求分别调用相关函数)
intmain(intargc,char*argv[]){
system("
color61"
);
intc,flag=1;
HashTable*H;
H=(HashTable*)malloc(LEN);
for(inti=0;
i<
HASHSIZE;
i++)
H->
elem[i]=NULL;
size=HASHSIZE;
count=0;
Recorda[MAXSIZE];
while
(1)
{
printf("
\n★☆★☆★☆★☆★☆wanghui★☆★☆★☆★☆★☆★☆"
\n★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"
\n★☆★☆我的未来不是梦★☆★☆"
\n★☆★☆无聊中郁闷死★☆★☆"
\n┏━━━━━━━━━━━━━┓"
\n★┃欢迎欢迎欢迎欢迎欢迎欢迎┃★"
\n〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓"
\n★★★★★★★哈希表的设计与实现★★★★★★"
\n【】.添加用户信息"
\n【】.读取所有用户信息"
\n【】.以姓名建立哈希表(再哈希法解决冲突)"
\n【】.以电话号码建立哈希表(再哈希法解决冲突)"
\n【】.查找并显示给定用户名的记录"
\n【】.查找并显示给定电话号码的记录"
\n【】.清屏"
\n【】.保存"
\n【】.退出程序"
\n温馨提示:
"
\nⅠ.进行操作前请先输出"
\nⅡ.进行操作前请先输出"
\n★★★★★★★〓〓〓〓〓〓〓〓〓★★★★★★"
\n"
请输入一个任务选项>
>
"
intnum;
scanf("
%d"
&
num);
switch(num){
case1:
getin(a);
break;
case2:
ShowInformation(a);
case3:
CreateHash1(H,a);
/*以姓名建立哈希表*/
case4:
CreateHash2(H,a);
/*以电话号码建立哈希表*/
case5:
c=0;
SearchHash1(H,c);
case6:
SearchHash2(H,c);
case7:
Cls(a);
case8:
Save();
case9:
return0;
default:
你输错了,请重新输入!
}
pause"
}
三、【实现描述(Implement)】
(30%)
抽象数据类型具体实现的函数原型说明、关键操作实现的伪码算法、函数设计、函数间的调用关系,关键的程序流程图等,给出关键算法的时间复杂度分析。
1主函数打印和主子函数调用:
\n★☆★☆★☆★☆★☆申平★☆★☆★☆★☆★☆★☆"
case