《数据结构实验报告七查找、》由会员分享,可在线阅读,更多相关《数据结构实验报告七查找、(21页珍藏版)》请在金锄头文库上搜索。
1、 (本实验项目方案受“教育部人才培养模式创新实验区(X3108005) ”项目资助)实验难度: A B C 序号 学号 姓名 成绩123指导教师 (签名)学期:2010 秋季学期 任课教师: 实验题目: 查找算法设计与实现 姓 名: 王 辉 学 号: 20091120154 电子邮件: 完成提交时间: 2010 年 12 月 27 日云南大学软件学院 数据结构实验报告云南大学软件学院 2010 学年 秋季 学期数据结构实验成绩考核表学号: 姓名: 本人承担角色: 评分项目 评分指标 分值 得分1. 实验目的明确 5实验构思(10% ) 2. 实验内容理解透彻、对实验所涉及到的知识点分析到位51
2、. 有对基本数据结构的抽象数据类型定义52. 实验方案设计完整,数据结构、算法选择合理 5实验设计(15% )3.算法结构和程序功能模块之间逻辑清晰、有相应的流程图51. 代码编写规范、风格统一、注释清楚易读 52. 程序运行正常,测试结果正确 15实验实现(25% )3. 界面友好、易于操作、有较强的容错性51. 内容详实无缺漏,文字流畅、图表清楚5实验报告撰写(10% )2. 实验结果分析客观、详细,实验体会真实可信,对原实验方案的改进和对实验内容的发散性思考51. 个人完成工作量 152. 个人技术水平 10个人工作量(30% )3. 团队合作精神 51. 有一定用户群 5实验运作(10
3、% ) 2. 应用前景分析 5综合得分: (满分 100 分)指导教师: 年 月 日(注:此表在难度为 C 时使用,每个成员一份。 )(下面的内容由学生填写,格式统一为,字体: 楷体, 行距: 固定行距 18,字号: 小四,个人报告按下面每一项的百分比打分。难度 A 满分 70 分,难度 B 满分 90 分)一、 【实验构思(Conceive ) 】(10%)1 哈希表查找。根据全年级学生的姓名,构造一个哈希表,选择适当的哈希函数和解决冲突的方法,设计并实现插入、删除和查找算法。熟悉各种查找算法的思想。2、掌握查找的实现过程。3、学会在不同情况下运用不同结构和算法求解问题。4 把每个学生的信息
4、放在结构体中:typedef struct /记录NA name;NA tel;NA add;Record;5 void getin(Record* a)函数依次输入学生信息6 人名折叠处理,先将用户名进行折叠处理折叠处理后的数,用除留余数法构造哈希函数 ,并返回模值。并采用二次探测再散列法解决冲突。7姓名以汉语拼音形式,待填入哈希表的人名约 30个,自行设计哈希函数,用线性探测再散列法或链地址法处理冲突;在查找的过程中给出比较的次数。完成按姓名查询的操作。将初始班级的通讯录信息存入文件。二、 【实验设计(Design)】(20%)(本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程
5、序模块的伪码说明,主程序模块与各子程序模块间的调用关系)1 抽象数据类型的功能规格说明和结构体:#include#include#include#include #define MAXSIZE 20 /电话薄记录数量 #define MAX_SIZE 20 /人名的最大长度#define HASHSIZE 53 /定义表长 #define SUCCESS 1#define UNSUCCESS -1#define LEN sizeof(HashTable)typedef int Status;typedef char NAMAX_SIZE;typedef struct /记录NA name;NA
6、 tel;NA add;Record;typedef struct /哈希表Record *elemHASHSIZE; /数据元素存储基址int count; /当前数据元素个数int size; /当前容量HashTable;2 主函数与各子函数的调用关系:(通过 switch(num)函数按不同功能要求分别调用相关函数 )int main(int argc, char* argv) system(color 61);int c,flag=1;HashTable *H;H=(HashTable*)malloc(LEN);for(int i=0;ielemi=NULL;H-size=HASHS
7、IZE;H-count=0;Record aMAXSIZE;while (1)printf(n wang hui);printf(n );printf(n 我的未来不是梦 );printf(n 无聊中郁闷死 );printf(n );printf(n ); printf(n 欢迎欢迎欢迎欢迎欢迎欢迎 ); printf(n ); printf(n 哈希表的设计与实现 );printf(n 【】. 添加用户信息 );printf(n 【】. 读取所有用户信息 );printf(n 【】. 以姓名建立哈希表( 再哈希法解决冲突) );printf(n 【】. 以电话号码建立哈希表( 再哈希法解决冲
8、突) );printf(n 【】. 查找并显示给定用户名的记录 ); printf(n 【】. 查找并显示给定电话号码的记录 );printf(n 【】. 清屏 );printf(n 【】. 保存 ); printf(n 【】. 退出程序 ); printf(n 温馨提示: ); printf(n .进行操作前请先输出 ); printf(n .进行操作前请先输出 ); printf(n );printf(n);printf(请输入一个任务选项);printf(n);int num;scanf(%d,switch(num) case 1:getin(a); break;case 2:ShowI
9、nformation(a);break;case 3: CreateHash1(H,a); /* 以姓名建立哈希表*/break;case 4: CreateHash2(H,a); /* 以电话号码建立哈希表*/break; case 5: c=0;SearchHash1(H,c); break; case 6:c=0;SearchHash2(H,c); break; case 7:Cls(a);break;case 8:Save();break;case 9:return 0;break;default:printf(你输错了,请重新输入!);printf(n); system(pause)
10、;return 0;三、 【实现描述(Implement ) 】(30%)(本部分应包括:抽象数据类型具体实现的函数原型说明、 关键操作实现的伪码算法、函数设计、函数间的调用关系,关键的程序流程图等,给出关键算法的时间复杂度分析。 )1 主函数打印和主子函数调用:int main(int argc, char* argv)system(color 61);int c,flag=1;HashTable *H;H=(HashTable*)malloc(LEN);for(int i=0;ielemi=NULL;H-size=HASHSIZE;H-count=0;Record aMAXSIZE;while (1)printf(n 申 平);printf(n );printf(n 我的未来不是梦 );printf(n 无聊中郁闷死 );printf(n );printf(n ); printf(n 欢迎欢迎欢迎欢迎欢迎欢迎 ); printf(n ); printf(n 哈希表的设计与实现 );printf(n 【】.