实验7查找算法的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;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;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(i
{
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;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)
{