C语言 顺序查找和折半查找
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言顺序查找、折半查找
#include<stdio.h>
#include<malloc.h>
typedef struct dui{
char data;
struct dui *next;
}linkqueue;
char temp;
void init_LIST(linkqueue *LIST)
{
LIST->next=NULL;
}
int len_LIST(linkqueue *LIST)
{
int i=0;
linkqueue *p;
p=LIST->next;
while(p!=NULL)
{
p=p->next;
i++;
}
return i;
}
void print_LIST(linkqueue *LIST)
{
linkqueue *p;
{
int len=len_LIST(LIST);
linkqueue *s;
s=LIST->next;
int a[100];
for(int i=0;i<len;i++)
{
a[i]=s->data;
s=s->next;
}
int k=0,l=0,h=len-1;int m;
while(l<=h)
{
k++;
}
void main()
{
linkqueue *LIST;
LIST=(linkqueue *)malloc(sizeof(linkqueue));
init_LIST(LIST);
creat_LIST(LIST);
shunxu(LIST);
zheban(LIST);
}
m=(l+h)/2;
if(a[m]==temp) {printf("####折半查找####\n位置:%d,查找次数:%d\n",m+1,k);break;} //位置m+1
if(a[m]>temp) h=m-1;
else l=m+1;
}
if(!(l<=h)) printf("####折半查找####\n查无此数");
p=LIST->next;
while(p!=NULL)
{
printf("%c ",p->data);
p=p->next;
}
printf("ቤተ መጻሕፍቲ ባይዱn");
int len=len_LIST(LIST);
printf("长度为%d\n",len);
}
void creat_LIST(linkqueue *LIST)
{
char x;
linkqueue *p,*s;
s=LIST;
while((x=getchar())!='#')
{
p=(linkqueue *)malloc(sizeof(linkqueue));
p->data=x;
p->next=NULL;
s->next=p;
s=p;
}
printf("您创建的列表是:");
print_LIST(LIST);
}
void shunxu(linkqueue *LIST)
{
int i=0,k=1;
printf("输入您要查找的元素:");
getchar();
temp=getchar();
linkqueue *p;
p=LIST->next;
for(;p!=NULL;p=p->next)
{
i++;
if(p->data==temp) {printf("####顺序查找####\n您要查找的元素在第%d位,比较了%d次\n",i,i); k=0;break;}
}
if(k) printf("####顺序查找####\n您要查找的元素不存在。\n");
}
void zheban(linkqueue *LIST)
#include<stdio.h>
#include<malloc.h>
typedef struct dui{
char data;
struct dui *next;
}linkqueue;
char temp;
void init_LIST(linkqueue *LIST)
{
LIST->next=NULL;
}
int len_LIST(linkqueue *LIST)
{
int i=0;
linkqueue *p;
p=LIST->next;
while(p!=NULL)
{
p=p->next;
i++;
}
return i;
}
void print_LIST(linkqueue *LIST)
{
linkqueue *p;
{
int len=len_LIST(LIST);
linkqueue *s;
s=LIST->next;
int a[100];
for(int i=0;i<len;i++)
{
a[i]=s->data;
s=s->next;
}
int k=0,l=0,h=len-1;int m;
while(l<=h)
{
k++;
}
void main()
{
linkqueue *LIST;
LIST=(linkqueue *)malloc(sizeof(linkqueue));
init_LIST(LIST);
creat_LIST(LIST);
shunxu(LIST);
zheban(LIST);
}
m=(l+h)/2;
if(a[m]==temp) {printf("####折半查找####\n位置:%d,查找次数:%d\n",m+1,k);break;} //位置m+1
if(a[m]>temp) h=m-1;
else l=m+1;
}
if(!(l<=h)) printf("####折半查找####\n查无此数");
p=LIST->next;
while(p!=NULL)
{
printf("%c ",p->data);
p=p->next;
}
printf("ቤተ መጻሕፍቲ ባይዱn");
int len=len_LIST(LIST);
printf("长度为%d\n",len);
}
void creat_LIST(linkqueue *LIST)
{
char x;
linkqueue *p,*s;
s=LIST;
while((x=getchar())!='#')
{
p=(linkqueue *)malloc(sizeof(linkqueue));
p->data=x;
p->next=NULL;
s->next=p;
s=p;
}
printf("您创建的列表是:");
print_LIST(LIST);
}
void shunxu(linkqueue *LIST)
{
int i=0,k=1;
printf("输入您要查找的元素:");
getchar();
temp=getchar();
linkqueue *p;
p=LIST->next;
for(;p!=NULL;p=p->next)
{
i++;
if(p->data==temp) {printf("####顺序查找####\n您要查找的元素在第%d位,比较了%d次\n",i,i); k=0;break;}
}
if(k) printf("####顺序查找####\n您要查找的元素不存在。\n");
}
void zheban(linkqueue *LIST)