急求大神!要求为二分法查找的非递归算法设计主函数,完善算法并运行验证,代码写了一半不知怎么继续0
用C语言写的,我的设想是主函数由用户输入表,然后验证表是否是有序数列,如果有序就让用户输入查找的数据,引用二分法的函数进行查找,如果无序就先按大小顺序排列后再进行查找,然后根据返回值大小判断查找是否成功。 验证表是否有序我已经写了,无序的排序那块我有点晕,然后根据返回值判断查找是否成功那块也就没写了。我编译了一下没有完成的代码,机器说有一个错误,但是查看组建栏发现有好长一串“error”= =求大神帮忙补充下代码顺带看下那个编译出的错误是怎么回事行么? 下面是我写的代码:#define LIST_SIZE 20#include
#include "malloc.h"
typedef struct{ KeyType key;
OtherType other_data;
}RecordType;
typedef struct{ RecordType r[LIST_SIZE+1];
int length;
}RecordList;
int BinSrch(RecordList *L,KeyType k){ int low=0;
int i=0;
high=L->length-1;
while(low<=high){
mid=(low+high)/2;
if(k==L->r[mid].key)
{
i=mid;
break;
}
else
if(kr[mid].key)
high=mid-1;
else
low=mid+1;
}
return(i);
}
void main(){
int BinSrch(RecordList *L,KeyType k);
int i;
int a;
int num;
//
//
//
L=malloc(sizeof(RecordList));//申请空间
printf("Please input the list:\n");
for(i=1;i<21;i++)
scanf("%d",&L->r[i]);//输入表
/*验证表是否有序排列,a=1,-1,0时为有序排列,a=2时需要对表进行排序*/
if(L->r[1]r[2]) {
for(i=2;i<21;i++)
{
if(L->r[i]r[i+1])
i++;
}
a=1;
}
else
{
if(L->r[1]>L->r[2])
{
for(i=2;i<21;i++)
{
if(L->r[i]r[i+1])
i++;
}
a=-1;
}
else
{
if(L->r[i]==L->r[i+1])
a=0;
else
a=2;
}
}
/*判断是否是有序,并排序*/ if(a==2)//表无序,先排序
{
}
else//表有序
{
printf("Please input the key-number:");
scanf("%d",k);
num=BinSrch(L,k);
printf("Your key-number is the NO.%d in this list.\n",num);
}
}