顺序查找算法

实现思想:静态查找表用顺序存储结构表示时,顺序查找的查找过程为:从表中的最后一个数据元素开始,逐个同记录的关键字做比较,如果匹配成功,则查找成功;反之,如果直到表中第一个关键字查找完也没有成功匹配,则查找失败。
应用场景:顺序查找一般理解为线性查找,一般针对数组或是链表,针对线性的数据存储结构实现,是最简单的查找算法。

下面通过自己建立一个顺序表来进行数据查找。构建完整程序并进行代码逻辑分析。

typedef struct {keyType key;//查找表中每个数据元素的值,注意KeyType可以是自定义数据类型或是普通数据类型//如果需要,还可以添加其他属性
}ElemType;

这个结构体主要用来存储数据,当我们创建一个需要存储数值的顺序表的时候就循环向这个结构中的keyType类型存储数据

typedef struct{ElemType *elem;//存放查找表中数据元素的数组int length;//记录查找表中数据的总数量
}SSTable;

这个结构体用来定影你存储数据的结构体数组,并控制你存储数据的数组长度。

//创建数据表
void Create(SSTable *st,int length)
{//(*st) = (SSTable *)malloc(sizeof(SSTable));st->length = length;st->elem = (ElemType *)malloc((length + 1)*sizeof(ElemType));printf("输入表中的数据元素:\n");//根据查找表中数据元素的总长度,在存储时,从数组下标为1的空间开始存储数据for (int i = 1;i<=length;i++){scanf("%d",&(st->elem[i].key));}
}

上面的代码会根据你传入的数组长度参数,进行数据表的创建

int search_seq(SSTable *st,keyType key)
{st->elem[0].key = key;    //将关键字作为一个数据元素放到查找表的第一个位置,起监视哨的作用int i = st->length;//从查找表的最后一个数据元素依次遍历,一直遍历到数组下标为0while(st->elem[i].key!=key){i--;}//如果 i = 0,说明查找失败,反之,返回的是含有关键字key的数据元素在查找表中的位置return i;
}
这是核心的查找接口,根据程序我们可以分析出会从数据表中最后一个数据依次往前面进行查询。

下面是整体程序

#include <stdio.h>
#include <stdlib.h>#define keyType int
typedef struct
{keyType key;   //查找表中每个数据元素的值
}ElemType;typedef struct
{ElemType *elem;//存放查找表中元素的数组int length;    //记录查找表中数据的总数量
}SSTable;//创建查找表
void Create(SSTable *st,int length)
{//(*st) = (SSTable *)malloc(sizeof(SSTable));st->length = length;st->elem = (ElemType *)malloc((length + 1)*sizeof(ElemType));printf("输入表中的数据元素:\n");//根据查找表中数据元素的总长度,在存储时,从数组下标为1的空间开始存储数据for (int i = 1;i<=length;i++){scanf("%d",&(st->elem[i].key));}
}int search_seq(SSTable *st,keyType key)
{st->elem[0].key = key;    //将关键字作为一个数据元素放到查找表的第一个位置,起监视哨的作用int i = st->length;//从查找表的最后一个数据元素依次遍历,一直遍历到数组下标为0while(st->elem[i].key!=key){i--;}//如果 i = 0,说明查找失败,反之,返回的是含有关键字key的数据元素在查找表中的位置return i;
}int main()
{SSTable st;Create(&st,6);printf("请输入要查找数据的关键字:\n");int key;scanf("%d",&key);int location = search_seq(&st,key);if(location == 0){printf("查找失败\n");}else{printf("数据在查找表中的位置为:%d\n",location);}return 0;
}

得出结果:
输入表中的数据元素:
11 22 33 44 55 66
请输入要查找数据的关键字:
66

顺序查找算法C语言实现相关推荐

  1. c语言顺序查找算法,c语言实现排序和查找所有算法

    c语言版排序查找完成,带详细解释,一下看到爽,能直接运行看效果. /* Note:Your choice is C IDE */ #include "stdio.h" #inclu ...

  2. c语言监视哨用法,C++ 实现带监视哨的顺序查找算法

    这篇文章主要介绍了C++ 实现带监视哨的顺序查找算法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下. 监视哨往往是程序里面的一个变量,如果是对数 ...

  3. 设置了监视哨的顺序查找算法效率高?你确定吗?

    [问题描述] 严蔚敏教授在<数据结构(C语言版 第2版)>中的顺序查找一节中提到"当元素个数≥1000时,设置有监视哨的顺序查找算法,比未设监视哨的顺序查找算法,进行一次查找所需 ...

  4. python二分法查找算法_顺序查找算法和折半(二分法)查找算法,C语言查找算法详解...

    查找是指在大量的信息中寻找一个特定的信息.在计算机中,查找是非常重要的一个应用,比如"百度".查找算法的好坏直接影响查找的速度. 常用的查找算法主要有顺序查找和折半(二分法)查找: ...

  5. 用c语言实现顺序查找,顺序查找算法及C语言实现

    通过前面对静态查找表的介绍,静态查找表即为只做查找操作的查找表. 静态查找表既可以使用.虽然一个是本节以静态查找表的顺序存储结构为例做详细的介绍. 顺序查找的实现 静态查找表用顺序存储结构表示时,顺序 ...

  6. 算法之顺序查找【C语言】

    注:摘自<数据结构>,黄国瑜,叶乃菁编著,清华大学出版社. 需求:运用顺序查找法来查找数据中某一个特定值 分析:一个一个遍历且比较,找到报匹配成功,未找到报匹配失败.时间复杂度为O(n). ...

  7. c语言编程顺序查找例题,C语言典型编程例题.doc

    C语言典型编程例题 典型编程例题 一.数列(阶乘)问题 1.s=1+22+32+--+202 2.求阶乘20!的值. 3.求1!+2!+--+20! 4.输出菲波那契数列前20个数(1,1,2,3,5 ...

  8. php顺序查找法,php二分查找、顺序查找算法

    摘要:php查找数组元素有内置的函数array_search和in_array,顺序查找对数组排序没有要求,二分查找法要求数组必须是一个有序数组!1.顺序查找function sequence_sea ...

  9. 二分查找算法c语言伪代码,算法-二分搜索算法

    算法:二分搜索算法(折半查找算法) 时间复杂度: 二分搜索算法概述 二分搜索算法伪代码 二分搜索算法实现 二分搜索算法概述 二分搜索算法,也称折半查找算法,即在一个有序数组中查找某一个特定元素.整个搜 ...

最新文章

  1. js数组中indexOf/filter/forEach/map/reduce详解
  2. AOP、注解实现日志收集
  3. Django 前后台的数据传递
  4. 口令红包 java,[1.7.2]Gifts — 我的世界服务器在线礼物和登陆奖励插件
  5. 多快好省的预训练模型:你丢我也丢
  6. 12月16日课程安排
  7. JavaScript学习随记——对象
  8. xml文档的pull解析与SAX解析
  9. eclipse一些实用小技巧
  10. java操作.ini文件
  11. 第十二章:(1)Fork/Join 分支合并框架
  12. 学计算机用商务本还是游戏本,工作学习游戏?这 8 款最具性价比的笔记本电脑,总有一款适合你...
  13. 手机通讯录 客户端/服务器数据同步方案设计
  14. 【模型分享】SolidWorks摇摆轮机构运动仿真
  15. 财务报表究竟是什么?怎么做?
  16. 【图像去雾】基于matlab颜色衰减先验图像去雾【含Matlab源码 2036期】
  17. 如何把极坐标化为直角坐标_如何把极坐标化为直角坐标
  18. 2021强烈推荐的十大Win10必备工具(重装系统必备)
  19. JAVA 项目打包和部署一站式解决方案
  20. 怎样把音乐存到计算机里,如何把CD光盘中的歌曲复制到电脑

热门文章

  1. oracle sql 降龙十八掌
  2. Location理解
  3. 蒜头君的数轴:正反gcd
  4. Web Server 配置安全
  5. 大学辍学、自学编程,GitHub 创始人是怎么号召 2800 万程序员的?
  6. 学生酒精消费预警分类模型建立
  7. vue中使用webVideoCtrl播放海康插件
  8. python实现数字签名2
  9. 如何将一个word文档的样式应用到另一个word文档
  10. 深度学习笔记~卷积网络中特征图的可视化