这段程序是不是没有初始化,关于查找的问题
#include"stdio.h"#include"malloc.h"
typedef struct
{
int t[50];
int length;
}SSTable;
/*************建立空顺序表*****************/
void Initlist(SSTable l)
{
//初始化函数
l.length=0;
}
/************创建顺序表******************/
void Creat(SSTable l)
{
int i;
printf("请输入顺序表数据:");
for(i=0;i<l.length;i++)
scanf("%d",&(l.t[i]));
printf("\n");
}
/***************顺序查找法***************/
void Sequential_search(SSTable l,int k)
{
int i=0;
l.t[l.length]=k;
while(l.t[i]!=k)
{
printf("第%d个检验的数据是%d\n",i+1,l.t[i]);
i++;
}
if(i==l.length)
{
printf("在顺序表中没有查找到您想要的数据\n");
}
else
{
printf("查找的数据在第%d位上\n",i+1);
}
}
/**************折半查找算法的实现**************/
void Binary_search(SSTable l,int k)
{
int low,mid,high;
low=0;
high=l.length-1;
while(low<=high)
{
mid=(low+high)/2;
printf("检测的数据为%d",l.t[mid]);
if(l.t[mid]=k)
{
printf("查找的数据在第%d位上",mid+1);
break;
}
else
if(l.t[mid]>k)
{
high=mid-1;
}
else
low=mid+1;
}
if(low>high)
printf("在顺序表中没有查找到您想要的数据");
}
/**************主函数********************/
void main()
{
int choose,n=0;
SSTable l;
printf("请输入数据个数:");
scanf("%d",&l.length);
Initlist(l);
Creat(l);
printf("\t\t*******************************\n");
printf("\t\t 1.顺序查找算法过程\n");
printf("\t\t 2.折半查找算法过程\n");
printf("\t\t*******************************\n");
printf("请选择要进行的查找操作:");
scanf("%d",&choose);
if(choose==1)
{
printf("请输入要查找的数据:");
scanf("%d",&n);
Sequential_search(l,n);
}
if(choose==2)
{
printf("请输入要查找的数据:");
scanf("%d",&n);
Binary_search(l,n);
}
}