实验八 查找实验.doc
上传人:sy****28 上传时间:2024-09-12 格式:DOC 页数:3 大小:41KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

实验八 查找实验.doc

实验八查找实验.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验八查找实验1、程序验证(1)建立含有若干个整数的顺序表,在此基础上实现顺序表的简单顺序查找算法。(2)下列函数是以顺序表的最后一个单元作为监视哨的简单顺序查找,阅读该程序,写出运行结果,并通过运行来验证。#defineLIST_SIZE20typedefstruct{charr[LIST_SIZE];intlength;//length为表中元素的个数}RecordList;RecordList*SqLset(){RecordList*L;inti=0;charc;L=malloc(sizeof(RecordList));scanf(“%c”,&c);//输入一个字符L->length=0;while(c!=’#’){//‘#’为输入结束标志L->r[i]=c;L->length++;i++;if(L->length==LIST_SIZE-1)break;scanf(“%c”,&c);}return(L);}intSequenSearch(RecordList*L,chark,intn){//在长度为n的顺序表L中顺序查找其关键字等于k的元素inti=0,position=-1;//position为查找到的位置L->r[n].key=k;//最后一个单元作为监视哨while(n!=i){if(L->r[i].key==k){position=i+1;break;}i++;}returnposition;}main(){RecordList*A;intm;charc;A=SqLset();scanf(“%c”,&c);//输入待查元素m=SequenSearch(A,c,A->length);if(m==-1)printf(“查找不成功!”);elseprintf(“m=%d,查找成功!”,m);}2、算法填空请在下面算法的空格处填入适当内容,以使算法能够递归实现二分查找过程。#defineLIST_SIZE20typedefstruct{intr[LIST_SIZE];intlength;//length为表中元素的个数}RecordList;RecordList*SqLset(){RecordList*L;inti=0,a;L=malloc(sizeof(RecordList));printf(“输入一个整型有序序列,输入0时结束!”)scanf(“%d”,&a);//输入一个整数L->length=0;while(a!=0){//整数0为输入结束标志,输入一个有序的整数序列L->r[i]=a;L->length++;i++;if(L->length==LIST_SIZE-1)break;scanf(“%d”,&a);}return(L);}intBinSrch(RecordList*L,intk,intlow,inthigh){//在有序表L中二分查找其关键字等于k的元素,intmid;if(low>high)return-1;else{mid=(low+high)/2;if()//找到待查元素returnmid;elseif(k<L->r[mid])return;elsereturn;}}main(){RecordList*A;intk,low,high;A=SqLset();low=0;high=A->length-1scanf(“%d”,&k);//输入待查元素m=BinSrch(A,k,low,high);if(m==-1)printf(“查找不成功!”);elseprintf(“m=%d,查找成功!”,m);}3、算法设计(1)为二分查找的非递归算法设计主函数,完善该算法,并通过运行来验证。(2)设顺序表中的关键字是递增有序的,将监视哨设在高下标端,设计算法实现简单顺序查找。