数据结构查找sc

来源:百度文库 编辑:神马文学网 时间:2024/04/29 15:51:17
#include
#define listsize 100
#define max 10
 typedef struct
{
 int data[listsize];
 int length;
}sqlist;//顺序表的类型
void createtsqlist(sqlist &L,int a[],int n)//用数组创建顺序表
{
 L.length=0;
 for(int i=0;i {
   L.data[L.length++]=a[i];
 }
}void findvalue(sqlist L,int x) //查找x是否在顺序表内
{
for(int i=0;i{
if(L.data[i]==x)
{ printf("一般顺序查找\n");
printf("%d是第%d个元素\n  查询了%d次\n",x,i+1,i+1);
return;
}
}
printf("一般顺序查找\n");
printf("%d不在顺序表内\n查询了%d次\n",x,L.length);
}
void search_bin(sqlist L,int x)//折半查找有序表
{
 int low=1;int high=L.length;int mid;int n=0;
 while(low<=high)
 { 
    mid=(low+high)/2;
    n++;
    if(x==L.data[mid])
    {printf("折半查找\n");
     printf("%d是第%d元素\n查询了%d次\n",x,mid+1,n);return;
    }
       else if(x    else low=mid+1;
  }
printf("折半查找\n");
printf("%d不在顺序表内\n",x);
printf("查询了%d次",n);
}
void main()
{int i,f;
 int a[max];
printf("请依次按递增或递减输入%d个数字,以空格分开\n",max);
for(i=0;iscanf("%d",&a[i]);
printf("请输入要查询的数字\n");
scanf("%d",&f);
 sqlist L1,L2;//L2创建为有序表
 createtsqlist(L1,a,max);
 findvalue(L1,f);//查找45是否在表内可以换成其他数
 createtsqlist(L2,a,max);
 search_bin(L2,f);//查找14是否在表内可以换成其他数
}