顺序查找

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》实验

题目:顺序查找班级:08计科

学号:10号姓名:

#include

#define MAX_SIZE 100

typedef struct{

int key;

}element;

element list[MAX_SIZE];

int seqsearch(element list[],int searchnum,int num);

int main()

{

int i,num,searchnum,k;

printf("请输入元素的个数:");

scanf("%d",&num);

printf("请输入元素:\n");

for(i=0;i

{

scanf("%d",&list[i].key);

}

while(1)

{

printf("请输入要查询的数据元素:");

scanf("%d",&searchnum);

k=seqsearch(list,searchnum,num);

if(k!=-1)

{

printf("所查询元素的下标为:");

printf("%d\n",k);

}

else

printf("查询元素不存在。\n");

}

return 0;

}

int seqsearch(element list[],int searchnum,int num)

{

int j;

list[num].key=searchnum;

for(j=0;list[j].key!=searchnum;j++)

;

return j

}

1、折半查找:

#include

#define MAX_SIZE 100

#define COMPARE(a,b) (a)>(b)?1:(a)==(b)?0:-1

typedef struct{

int key;

}element;

element list[MAX_SIZE];

int binsearch(element list[],int searchnum,int num); int main()

{

int i,num,searchnum,k;

printf("请输入元素的个数:");

scanf("%d",&num);

printf("请输入元素:\n");

for(i=0;i

{

scanf("%d",&list[i].key);

}

while(1)

{

printf("请输入要查询的数据元素:");

scanf("%d",&searchnum);

k=binsearch(list,searchnum,num);

if(k!=-1)

{

printf("所查询元素的下标为:");

printf("%d\n",k);

}

else

printf("查询元素不存在。\n");

}

return 0;

}

int binsearch(element list[],int searchnum,int num) {

int left=0,right=num-1,middle;

while(left<=right)

{

middle=(left+right)/2;

switch(COMPARE(list[middle].key,searchnum))

{

case 1:right=middle-1;break; case 0:return middle;

case -1:left=middle+1;

}

}

return -1;

}

实验结果:

相关文档
最新文档