实验7查找算法的实现

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

(一)顺序查找

#include

#define MAX 100

typedef int keytype;

typedef struct

{

keytype key;

}elemtype;

typedef struct

{

elemtype elem[MAX+1];

int length;

}SStable;

void create_seq(SStable *list);

int seq_search(SStable *list,keytype k);

void main()

{

SStable *list,table;

keytype key;

int i;

list=&table;

printf("请输入顺序表的长度:");

scanf("%d",&list->length);

create_seq(list);

printf("创建的顺表内容:\n");

for(i=0;ilength;i++)

printf("list.elem[%d].key=%d\n",i+1,list->elem [i].key);

printf("输入查找关键字:");

scanf("%d",&key);

seq_search(list,key);

}

void create_seq(SStable *list)

{

int i;

printf("请输入顺序表的内容:\n");

for(i=0;ilength;i++)

{

printf("list.elem[%d].key=",i+1);

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

}

}

int seq_search(SStable *list,keytype k)

{

int i=0,flag=0;

while(ilength)

{

if(list->elem[i].key==k)

{

printf("查找成功.\n");

flag=1;

printf("list.elem[%d].key=%d\n",i+1,k);

}

i++;

}

if(flag==0)

printf("没有找到数据%d!\n",k);

return(flag);

}

(二)折半查找

#include

#define MAX 100

typedef struct

{

int elem[MAX+1];

int length;

}Stable;

void creat_seq(Stable *list);

int sort_seq(Stable *list);

int bin_search(Stable *list,int k,int low,int high);

void main()

{

Stable *list,table;

int i,key;

list=&table;

printf("请输入线性表的长度:");

scanf("%d",&list->length);

creat_seq(list);

sort_seq(list);

printf("\n请输入查找的值:");

for(i=1;i<=list->length;i++)

printf("list.elem[%d].key=%d\n",i,list->elem[i]);

printf("\n:");

scanf("%d",&key);

bin_search(list,key,1,list->length);

}

void creat_seq(Stable *list)

{

int i;

printf("请输入顺序表的内容:\n");

for(i=1;i<=list->length;i++)

{

printf("list.elem[%d].key=",i);

scanf("%d",&list->elem[i]);

}

}

int sort_seq(Stable *list)

{

int i,j,flag;

for(i=1;i<=list->length;i++)

{

flag=0;

for(j=1;jlength-i+1;j++)

if(list->elem[j]>list->elem[j+1])

{

list->elem[0]=list->elem[j+1];

list->elem[j+1]=list->elem[j];

list->elem[j]=list->elem[0];

flag=1;

}

if(flag==0)return 1;

}

}

int bin_search(Stable *list,int k,int low,int high)

{

相关文档
最新文档