顺序查找(有哨兵)
传统查找需要两个函数,一个循环一个if判断
含有哨兵的顺序查找,优势在于一个while函数就可以完成判断和循环两个操作
使用哨兵之后,不会出现查找不到元素的情况,最多出现返回值为0的情况
完整程序:
#include "stdio.h"
int Search(int *a,int n)
{
int x;
int i=n;
printf("请输入要查询的数:\n");
scanf("%d",&x);
a[0]=x;
while(a[i]!=x)
{
i--;
}
return i;
}
int main()
{
int n,i;
int m;
printf("请输入序列的元素个数:\n");
scanf("%d",&n);
int a[n+1];
printf("请输入序列中元素:\n");
for(i=1;i<n+1;i++)
{
scanf("%d",&a[i]);
}
m=Search(a,n);
if(m==0)
printf("要查询的数不在此序列中\n");
else
printf("此数在序列中的位置为:%d\n",m);
}
结果: