北京交通大学-数据结构上机实验-5.doc

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北京交通大学-数据结构上机实验-5

数据结构上机实验五 实验内容:查找表和内部排序的基本算法 实验要求: 1) 基本操作要作为函数被调用,做到模块化. 2) 基本上实现每个实验题目的要求. 分组要求:可单独完成,也可两人一组。 实验目的: 1)熟悉C/C++基本编程,培养动手能力. 2)通过实验,加深对查找算法的理解. 评分标准: 1) 只完成第一和第二题,根据情况得4,5-分; 2)完成前3题,根据情况得5,6分; 3)在2)基础上,选做四)中题目,根据情况得6,7分。 题目: 一)顺序表与有序表的查找 (1)建立一个顺序表,利用教材9.1.1的顺序查找算法进行查找; #includestdio.h #includestdlib.h typedef struct node{ int key; }keynode; typedef struct Node{ keynode r[50]; int length; }list,*sqlist; int Createsqlist(sqlist s) { int i; printf(请输入您要输入的数据的个数:\n); scanf(%d,(s-length)); printf(请输入您想输入的%d个数据;\n,s-length); for(i=0;is-length;i++) scanf(%d,(s-r[i].key)); printf(\n); printf(您所输入的数据为:\n\n); for(i=0;is-length;i++) printf(%-5d,s-r[i].key); printf(\n\n); return 1; } int searchsqlist(sqlist s,int k) { int i=0; s-r[s-length].key=k; while(s-r[i].key!=k) { i++; } if(i==s-length) { printf(该表中没有您要查找的数据!\n); return 0; } else return i+1; } sqlist Initlist(void) { sqlist p; p=(sqlist)malloc(sizeof(list)); if(p) return p; else return NULL; } main() { int keyplace,keynum;// sqlist T;// T=Initlist(); Createsqlist(T); printf(请输入您想要查找的数据的关键字:\n\n); scanf(%d,keynum); printf(\n); keyplace=searchsqlist(T,keynum); if(keyplace0) printf(您要查找的数据的位置为:\n\n%d\n\n,keyplace); return 2; } (2)建立一个有序表,利用折半法进行查找; #includestdio.h #includestdlib.h typedef struct node{ int key; }keynode; typedef struct Node{ keynode r[50]; int length; }list,*sqlist; int Createsqlist(sqlist s) { int i; printf(请输入您要输入的数据的个数:\n); scanf(%d,(s-length)); printf(请由小到大输入%d个您想输入的个数据;\n\n,s-length); for(i=0;is-length;i++) scanf(%d,(s-r[i].key)); printf(\n); printf(您所输入的数据为:\n\n); for(i=0;is-length;i++) printf(%-5d,s-r[i].key); printf(\n\n); return 1; } int searchsqlist(sqlist s,int k) { int low,mid,high; low=0; high=s-length-1; while(low=high) { mid=(low+high)/2; if(s-r[mid].key==k) return mid+1; else if(s-r[mid].keyk) high=mid-1; else low=mid+1; } printf(该表中没有您要查找的数据!\n); ret

文档评论(0)

2017ll + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档