/*基于线性表的查找法——顺序查找法
顺序查找的缺点是n较大时,平均查找长度较大,效率低
优点对数据元素存储没有要求,顺序存储或链式存储均可;对表中记录的有序性也没有要求
*/
#include <stdlib.h>
#include<stdio.h>
#define LIST_SIZE 20
//链表结点类型
typedef struct {
int key;
int data;
}RecordType;
//链表数组结构
typedef struct {
RecordType r[LIST_SIZE+1];
int length;
}RecordList;
//初始化链表数组
int Init_Seq(RecordList *RecordList){
if (!RecordList->r)
return -1;
else {
RecordList->length = 0;
return 1;
}
}
//设置监视哨的顺序查找法 耿国华版本
int SeqSearch(RecordList l,int k){
l.r[0].key = k;
int i = l.length;
while (l.r[i].key!=k)
i--;
return i;
}
/*不设置监视哨的顺序查找法 耿国华版本
虽然没有设置监视哨 但是还是空出来了第一个位置
如果要实现从实际地址的第一个元素开始排序 那么i的条件则改为i>=0且如果查找失败的话 返回值要设置为-1 最后在输出下标的时候就需要index+1来调整
*/
int SeqSearch(RecordList l, int k) {
int i = l.length;
while (i>=1&&l.r[i].key != k)
i--;
if (i >= 1)
基于线性表的查找法——顺序查找法
最新推荐文章于 2024-02-23 14:13:58 发布