实验目的:查找和排序,根据实际情况选择效率较高的算法解决应用问题。.docVIP

实验目的:查找和排序,根据实际情况选择效率较高的算法解决应用问题。.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验目的:查找和排序,根据实际情况选择效率较高的算法解决应用问题。.doc

洛阳理工学院实验报告 系部 计算机系 班级 B110505 学号 姓名 李满意 课程名称 数据结构 实验日期 2013.05.24 实验名称 宿舍管理查询掌握数据结构两种基本查找和排序解决应用问题。 电脑一台,VC++6.0软件。 实验内容与算法思想: 内容: 为宿舍管理人员设计一个宿舍管理查询系统, 程序采用交互工作方式,完成下列功能: 建立合适的数据结构作为查找表并输入数据; 数据分别按关键字姓名、学号、房号进行排序(所学排序算法任选一种效率较高的算法); 设计查询菜单,按指定关键字姓名、学号、房号进行查询并输出结果,要求查询采用效率较高的算法实现; 可以连续查询; 算法思想: 本程序采用顺序结构存储数据,可实现按关键字姓名、学号、房号进行排序,程序排序方法为折半排序法;另外,可实现按关键字姓名、学号、房号进行查询,查询方法为折半查询;主函数中使用了while循环语句和switch选择语句可以实现多次查询。 运行结果: 实验总结: 这次上机实验主要是对第八第九章的复习、实验,在这次实验中同时对我大一时的c语言也起到了复习作用,大一时的一些函数用法都忘了,这次用到,翻了下课本,所以经常上机还是很好的,既能有些实战经验,还可以经常复习一下以往的知识。 另外,在这次实验中我用的是折半的方法,效率也挺高的吧,但我本来打算多用几种方法实现的,但是由于时间问题,所以全部用的折半,不过,课下还可以尝试做一下,练一练,这样我会更好的学好c语言、学号数据结构的。 以后会经常上机,经常编写课上的学习的算法,以巩固学习的知识,熟练编程的技巧。 附:源程序: #includestdio.h #includestdlib.h struct student { char name[20]; char num[20]; char room[20]; }; struct student stu[20]; int a; int shuru() { int i=1,flag=1; printf(请输入宿舍成员并以“*”作为输入结束标记:\n); while(flag) { scanf(%s,stu[i].name); if(strcmp(stu[i].name,*)==0)break; scanf(%s%s,stu[i].num,stu[i].room); a=i; i++; } } void shuchu() { int i; char name[20]=name,num[20]=num,room[20]=room; printf(%-15s%15s%15s\n,name,num,room); for(i=1;i=a;i++) { printf(%-15s%15s%15s\n,stu[i].name,stu[i].num,stu[i].room); } printf(\n); } void binsortname(struct student stu[],int a) { struct student x; int low,high,mid,i,j; for(i=2;i=a;++i) { x=stu[i]; low=1; high=i-1; while(low=high) { mid=(low+high)/2; if(strcmp(x.name,stu[mid].name)0)high=mid-1; else low=mid+1; } for(j=i-1;j=low;--j)stu[j+1]=stu[j]; stu[low]=x; } } void binsrchname(struct student stu[]) { int low,high,mid; char k[20]; low=1; high=a;/*置区间初值*/ printf(请输入需要查找的姓名:); scanf(%s,k); while( low = high) { mid=(low+high) / 2; if(strcmp(k,stu[mid].name)==0) {printf(%15s%15s%15s\n,stu[mid].name,stu[mid].num,stu[mid].room);break;}/*找到待查元素*/ else if(strcmp(k,stu[mid].name)0) high=mid-1;/*未找到,则继续在前半区间进行查找*/ else low=mid+1;/*继续在后半区间进行查找*/ } } vo

文档评论(0)

docindoc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档