数据结构课程设计实验报告参考.docVIP

  • 29
  • 0
  • 约4.26万字
  • 约 54页
  • 2018-03-04 发布于贵州
  • 举报
数据结构课程设计实验报告参考

《数据结构》课程设计任务书 学期: 班级: 一、设计目的 《数据结构》是一门实践性较强的软件基础课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。 设计要求 通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。学生必须仔细读《数据结构》课程设计,认真完成课设的有问题及时主动与教师沟通。课程设计按照教学要求需要周时间完成学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时向教师汇报。设计选题 3.用哈希数查找第一个用户的信息: (四)分析与探讨 这道题主要解决在查找用户时解决冲突。利用哈希表。 程序的功能像添加用户信息,读取所有用户信息,清屏以及保存功能 ,都很容易实现,而像以姓名建立哈希表;以电话号码建立哈希表; 查找并显示给定用户名的记录;查找并显示给定电话号码的记录这些就比较难点。要想实现这些,必须了解关于散列表的一些基本定义和原理。 以姓名建立哈希表的主要函数: void CreateHash1(HashTable* H,Record* a){ for(i=0;iNUM_BER;i++) { c=0; p=Hash1(a[i].name); pp=p; while(H-elem[pp]!=NULL) { pp=collision(p,c); if(pp0){ cout第i+1记录无法解决冲突; continue; } } H-elem[pp]=(a[i]); H-count++; cout第i+1个记录冲突次数为c.\n; } cout\n建表完成!\n此哈希表容量为HASHSIZE,当前表内存储的记录个数为H-count.\n; benGetTime(); } 其中的难点就是管理冲突的解决办法,方法就是用二次探测法,主要实现: void SearchHash1(HashTable* H,int c){ benGetTime(); NA str; cout\n请输入要查找记录的姓名:\n; cinstr; 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]!=NULLeq(str,H-elem[pp]-name)==1){ cout\n查找成功!\n查找过程冲突次数为c; cout姓名:H-elem[pp]-name\n电话号码:H-elem[pp]-tel\n联系地址:H-elem[pp]-add\n; } else cout\n此人存在,查找不成功!\n; } (六) 附录:源代码 #includestdio.h #includeiostream.h #includestring #include windows.h #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 NA[MAX_SIZE]; typedef struct{//记录 NA name; NA tel; NA add; }Record; typedef struct{//哈希表 Record *elem[HASHSIZE]; //数据元素存储基址 int count; //当前数据元素个数 int size; //当前容量 }HashTable; //关键字比较功能的实现 Status eq(NA x,NA y){//关键字比较,相等返回SUCCESS;否则返回UNSUCCESS if(strcmp(x,y)==0) return SUCCESS;

文档评论(0)

1亿VIP精品文档

相关文档