顺序表的查找(按位查找、按值查找)(数据结构与算法)

news/2025/2/4 2:52:28/

顺序表的基本操作:按位查找、按值查找

在这里插入图片描述

顺序表的按位查找

GetElem(L, i) :按位查找,获取表L中第 i 个位置元素的值

#define MaxSize 10                  //定义最大长度
typedef struct{ElemType data[MaxSize];          //用静态的“数组”存放数据元素   静态分配int length;                     //顺序表的当前长度
}SqList;                            //顺序表的类型定义(静态分配方式)ElemType GetElem(SqList L, int  i){return L.data[i-1];
}	

顺序表的按位查找---------动态分配

在这里插入图片描述

#define InitSize 10              //顺序表初始长度
typedef struct{ElemType *data;            //指示动态分配数组的指针int MaxSize;                //顺序表的最大容器int length;                //顺序表的当前长度
}SeqList;                     //顺序表的类I型那个定义(动态分配方式)ElemType GetElem(SeqList L, int i){return L.data[i-1];
}ElemType *data; //如果一个ElemType占6B, 即sizeof(ElemType)  == 6, 指针data指向的地址为2000

如果换一个类型的指针,指向同一个地址,int *p; 一个int占4B

在这里插入图片描述
在这里插入图片描述
能够实现随机存储的基础就在于顺序表中所有的数据元素在内存里都是连续存放的,并且这些数据元素的数据类型相同,也就是说每个数据元素所占的内存空间一样大。所以我们只需要知道一个顺序表的起始地址,每个数据元素的大小,就可以立即找到第 i 个元素的位置。
在这里插入图片描述

顺序表的按值查找

LocateElem(L, e); 按值查找操作,在表L中查找具有给定关键字值的元素。

#define InitSize 10                  //顺序表初始长度
typedef struct{ElemType * data;                 //指示动态分配数组的指针int MaxSize;                     //顺序表的最大容量int length;                      //顺序表的当前长度
}SeqList;                            //顺序表的类型定义(动态分配方式)//在顺序表L中查找第一个元素值等于e的元素,并返回其位序。
int LocateElem(SeqList L, ElemType e){for (int i = 0; i < L.length; i++)if (L.data[i] == e)   //判断元素是否等于查找元素return i+1;    //数组下标为i的元素值等于e, 返回其位序 i + 1return 0;          //推出循环,说明查找失败
}

在这里插入图片描述

  • 刚开始 i = 0, length = 6; 第一个数据元素data[0]为6,和9不相等。if条件不满足, 进行 i++操作,i 由0----->1.第二轮循环依然不相等,i 变为2,第三轮找到9,返回位序 i + 1, 即返回3。
    另外要注意,如果是两个结构类型查找,不能进行上述if条件的判断,需要进行运算符重载。

在这里插入图片描述

按值查找的时间复杂度

在这里插入图片描述

知识回顾思维导图

在这里插入图片描述


http://www.ppmy.cn/news/1178456.html

相关文章

sqoop和flume简单安装配置使用

1. Sqoop 1.1 Sqoop介绍 Sqoop 是一个在结构化数据和 Hadoop 之间进行批量数据迁移的工具 结构化数据可以是MySQL、Oracle等关系型数据库 把关系型数据库的数据导入到 Hadoop 与其相关的系统 把数据从 Hadoop 系统里抽取并导出到关系型数据库里 底层用 MapReduce 实现数据 …

Echarts-3D柱状图

通过Echarts的echarts.graphic.extendShape实现真正的3D柱状图 思路就是通过调整顶部面(CubeTop)、左侧面(CubeLeft)、右侧面(CubeRight)来决定柱状图的宽窄 建议优先调整顶部面&#xff0c;一般c1不需要动 // echarts-3D-bar-config.js import Vue from "vue";cons…

java集合之List接口实现类常用方法详解

目录 一、List集合概述 二、ArrayList类 三、ArrayList常用方法实例 四、LinkedList类 五、Linkedist常用方法实例 一、List集合概述 java.util.List接口继承自Collection接口&#xff0c;是单列集合的一个分支&#xff0c;通常将实现了List接口的对象称为List集合&#x…

基于html5+javascript技术开发的房贷利率计算器

房贷计算器是一款专为购房者设计的实用工具应用&#xff0c;其主要功能是帮助用户详细计算房贷的还款金额、利息以及还款计划等。通过这款软件&#xff0c;用户可以更加便捷地了解到自己的还款情况和计划&#xff0c;从而更好地规划自己的财务。下面将对房贷计算器进行详细的介…

【C语言】strcpy()函数

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:C语言 ⚙️操作环境:Visual Studio 2022 目录 一.strcpy()函数简介 1.函数功能 2.函数参数 1>.char * destination 2>.const char * source 3.函数返回值 4.函数头文件 二.strcpy()函数的具体使用 1.使用s…

YOLO目标检测——红外人员数据集【含对应voc、coco和yolo三种格式标签+划分脚本】

实际项目应用&#xff1a;红外热像仪进行安全监控数据集说明&#xff1a;红外人员检测数据集&#xff0c;真实场景的高质量图片数据标签说明&#xff1a;使用lableimg标注软件标注&#xff0c;标注框质量高&#xff0c;含voc(xml)、coco(json)和yolo(txt)三种格式标签&#xff…

Hyperledger Fabric搭建测试网络

本文使用的Fabric版本&#xff1a;V2.5.4 Ubuntu系统&#xff1a;16.04LTS 前序文章已经详细介绍了如何安装部署Hyperledger Fabric系统&#xff0c;这里不再赘述。本篇文章主要介绍如何使用Fabric的测试网络。在正式开始之前&#xff0c;有一点需要说明&#xff1a; Hyperled…

0038【Edabit ★☆☆☆☆☆】【生成kv对】Pair Management

0038【Edabit ★☆☆☆☆☆】【生成kv对】Pair Management arrays language_fundamentals Instructions Given two arguments, return an array which contains these two arguments. Examples makePair(1, 2) // [1, 2] makePair(51, 21) // [51, 21] makePair(512124, 215…