顺序查找的过程:从表的一端开始,依次将记录的关键字和给定的值进行比较,若某个记录的关键字和给定值相等,则查找成功;反之,若扫描整个表后,还未找到关键字和给定值相等的记录,则查找失败。
首先了解顺序存储结构;
typedef struct{
KeyType key;//关键字域
InfoType otherinfo;//其他域
}ElemType;
typedef struct{
ElemType *R;//存储空间地址
int length;//当前长度
}SSTable;
顺序查找算法;
//顺序查找
int Search_Seq(SSTable ST,KeyType key,int n)
{//在顺序表ST中顺序表找其他关键字等于key的数据元素。若找到,则函数值为该元素在表中的位置,否则为0
int i;
for(i=n;i>=1;--i)
{
if(ST.R[i].key==key)
return i;//从后往前找
}
}
设置监视的查找
//设置监视哨的查找
int Search_Seq1(SSTable ST,KeyType key,int n)
{//在顺序表ST中顺序表找其他关键字等于key的数据元素。若找到,则函数值为该元素在表中的位置,否则为0
int i;
ST.R[0].key=key;
for(i=n;ST.R[i].key!=key;--i);
return i;//i为最终结果
}
下面是完整代码: