1、基本思路:从表的一端开始,顺序扫描线性表,以此将扫描到的关键字 和给定的值K进行比较,若当前扫描到的值和给定值相等,则查找成功,返回它所在的位置,否则查找失败,返回0.
2、算法实现
(1)
typedef struct{
ElemType *elem; //元素存储空间基址建表时按实际长度分配,0单元留空
int TableLen; //表长度
}SSTable;
int Search_Seq(SSTable ST;ElemType key)
{
ST.elem[0]=key; //哨兵
for(i=ST.TableLen;ST.elem[i]!=key;--i) //从后往前查找
return i; //若表中不存在给定值key的元素,将i查找到0时退出循环
}
(2)
int Squential_Seach(int *a,int n,int key)
{
int i;
for(i=1;i<=n;i++)
{
if(a[i]==key)
return i;
}
return 0;
}
(3)
int Sequential_Search(int *a,int n,int key)
{//设置哨兵是为了免去判断查找位置是否越界
int i;
a[0]=key; //设置a[0]为关键字值,我们称之为哨兵
i=n; //循环从数组尾部开始
while(a[i]!=key)
{
i--;
}
return i; //返回0说明查找失败
}