1、单链表的顺序查找
LinkList serach(LinkList head,ElemType key)
{ //在带头结点的单链表head中查找其值为key的结点
LNode *P=head->next;
while(P&&p->data!=key)
{
p=p->next;
}
return p;//若p=NULL,则查找失败,否则p指向值为key的结点
}
2、顺序表的折半查找
int BinSearch1(int r[],int n,int k)//非递归
{
int low=1,high=n;//设置查找区间
while(low<=high)//如果区间存在
{
int mid=(low+high)/2;
if(k<r[mid])high=mid-1;//查找在左半区进行,回到while那一步
else if(k>r[mid])low=mid+1;
else return mid;
}
return 0;//如果区间不存在,则返回0,查找失败
}
int BinSearch2(int r[],int low,int high,int k)//递归
{
int mid=(low+high)/2;
if(low>high) return 0;
else
{
if(k<r[mid])BinSearch2(r,low,mid-1,k);
else if(k>r[mid])BinSearch2(r,mid+1,high,k);
else return mid;
}
}