顺序查找结构体实现

顺序查找的过程:从表的一端开始,依次将记录的关键字和给定的值进行比较,若某个记录的关键字和给定值相等,则查找成功;反之,若扫描整个表后,还未找到关键字和给定值相等的记录,则查找失败。

首先了解顺序存储结构;

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为最终结果 
 
}

下面是完整代码:


                
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
顺序查找算法,也称为线性查找算法,是一种简单直观的查找算法。它的基本思想是从线性表的一端开始,逐个对比查找元素,直到找到目标元素或搜索到线性表的末尾为止。 下面是实现线性表的顺序查找算法的示例代码: ```c #include <stdio.h> #define MAXSIZE 100 // 定义线性表最大长度 // 定义线性表结构体 typedef struct { int data[MAXSIZE]; // 存储数据元素 int length; // 线性表长度 } SqList; // 线性表顺序查找算法 int Search_Seq(SqList L, int key) { int i; for (i = 0; i < L.length; i++) { if (L.data[i] == key) { return i; // 查找成功,返回元素下标 } } return -1; // 查找失败,返回-1 } int main() { SqList L = {{1, 3, 5, 7, 9}, 5}; // 初始化线性表 int key = 5; // 要查找元素值 int result = Search_Seq(L, key); // 进行顺序查找 if (result == -1) { printf("查找失败!\n"); } else { printf("元素%d的位置为%d\n", key, result); } return 0; } ``` 在上面的示例代码,我们先定义了一个结构体 `SqList` 用来表示线性表,其包括一个数组 `data` 用来存储数据元素,和一个变量 `length` 表示线性表长度。然后定义了一个函数 `Search_Seq` 用来进行线性表的顺序查找,该函数接收两个参数:线性表 `L` 和要查找元素值 `key`,返回值为目标元素在线性表的下标,如果查找失败则返回-1。最后在 `main` 函数初始化了一个线性表 `L`,并进行了一次元素为5的顺序查找

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值