线性表之顺序表

主要内容

  1. 顺序表
    预备知识
    定义:

线性表是一种数据结构,它由n个具有相同特性的数据元素组成的有限序列。线性表中的数据元素之间存在一对一的关系,即除了第一个元素外,每个元素都有且仅有一个直接前驱元素,除了最后一个元素外,每个元素都有且仅有一个直接后继元素。

线性表的基本操作包括:

  1. 创建线性表 InitList(&L):初始化一个空的线性表。
  2. 销毁线性表 DestroyList(&L):释放线性表所占用的内存空间。
  3. 清空线性表:将线性表中的所有元素清空,使其为空表。
  4. 判断线性表是否为空 Empty(L):判断线性表中是否有元素。
  5. 获取线性表长度 Length(L):获取线性表中元素的个数。
  6. 获取指定位置的元素 GetElem(L,i):获取线性表中指定位置的元素值。
  7. 插入元素 ListInsert(&L,i,e):在指定位置插入一个新的元素。
  8. 删除元素 LiistDelete(&L,i,&e):删除线性表中指定位置的元素。
  9. 查找元素LocateElem(L,e):查找线性表中是否存在指定的元素,并返回其位置。
  10. 修改元素:修改线性表中指定位置的元素值。

一.顺序表

顺序表是一种线性表,用一组地址连续的存储单元依次存储线性表中的元素。

顺序表是一种线性表的存储结构,它的基本操作包括插入操作、删除操作和按值查找。

1.插入操作:

代码如下(示例):

C语言实现:

void insert(int *arr, int *len, int index, int value) {if(index < 0 || index > *len) {printf("插入位置不合法\n");return;}for(int i = *len - 1; i >= index; i--) {arr[i+1] = arr[i];}arr[index] = value;(*len)++;
}

Python实现:

def insert(arr, index, value):arr.insert(index, value)

2.删除操作:

代码如下(示例):

C语言实现:

void delete(int *arr, int *len, int index) {if(index < 0 || index >= *len) {printf("删除位置不合法\n");return;}for(int i = index; i < *len - 1; i++) {arr[i] = arr[i+1];}(*len)--;
}

Python实现:

def delete(arr, index):arr.pop(index)

3.按值查找:

代码如下(示例):

C语言实现:

int search(int *arr, int len, int value) {for(int i = 0; i < len; i++) {if(arr[i] == value) {return i;}}return -1;
}

Python实现:

def search(arr, value):return arr.index(value)

以上是顺序表的基本操作,分别用C语言和Python实现了插入操作、删除操作和按值查找。


总结

以上是今天要讲内容,学到了顺序表的相关操作。
线性表–顺序表-1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/167351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GEE:基于 Landst 遥感数据计算的 kNDVI 下载 APP

作者&#xff1a;CSDN _养乐多_ 本文记录了在Google Earth Engine&#xff08;GEE&#xff09;平台中&#xff0c;使用 Landsat 遥感数据计算并且下载 kNDVI 的应用 APP 链接&#xff0c;并介绍该 APP 的使用方法和步骤。该APP可以为用户展示 NDVI 和 kNDVI 的遥感影像&#…

抽象类, 接口, Object类 ---java

目录 一. 抽象类 1.1 抽象类概念 1.2 抽象类语法 1.3 抽象类特性 1.4 抽象类的作用 二. 接口 2.1 接口的概念 2.2 语法规则 2.3 接口的使用 2.4 接口间的继承 2.5 抽象类和接口的区别 三. Object类 3.1 toString() 方法 3.2 对象比较equals()方法 3.3 hash…

免费获取GPT-4的五种工具

不可否认&#xff0c;由OpenAI带来的GPT-4已是全球最受欢迎的、功能最强大的大语言模型&#xff08;LLM&#xff09;之一。大多数人都需要使用ChatGPT Plus的订阅服务去访问GPT-4。为此&#xff0c;他们通常需要每月支付20美元。那么问题来了&#xff0c;如果您不想每月有这笔支…

基于JavaWeb+SpringBoot+Vue医院管理系统小程序的设计和实现

基于JavaWebSpringBootVue医院管理系统小程序的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏[Java 源码获取 源码获取入口 Lun文目录 目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关技术 2 2.1微信小程序 2 2.2 …

井盖位移传感器厂家批发,守护井盖安全

窨井盖广泛分布于城市街道&#xff0c;其管理效果直接反映了城市治理的现代化程度。根据住房和城乡建设部发布的《关于进一步加强城市窨井盖安全管理的通知》&#xff0c;全国各地需加强窨井盖的安全管理。作为市政基础设施的一个重要的组成部分&#xff0c;井盖的管理工作不仅…

去水印网站哪个好?试试这个去水印软件!

在工作中&#xff0c;我们都曾遇到过图片水印的困扰。在众多的在线水印去除工具中&#xff0c;虽然选择看似丰富&#xff0c;但往往很难找到完全满足我们需求的那一个。有些工具操作过程繁复&#xff0c;有些工具在处理复杂水印时力不从心&#xff0c;还有些工具在去水印的过程…

【Spring日志】

一.日志作用 1.定位和发现问题 这是日志的主要用途,通过查看日志,我们可以定位问题发生的位置,从而快速的发现问题,分析问题. 2.系统监控 监控几乎是一个成熟系统的标配,我们可以通过日志记录这个系统的运行状态,比如记录方法的响应时间,响应状态,通过设置不同的规则,超过阈值就…

【MyBatis <if> <where>标签介绍】

文章目录 <if>标签<where>标签<foreach>标签 <if>标签 <if>标签允许我们在SQL语句中添加条件判断。 <if test"condition"><!-- 当条件满足时执行的SQL语句 --> </if>其中&#xff0c;test属性是一个表达式&#x…

葡萄酒按酒体如何分类,都有什么特点?

葡萄酒的酒体是指酒液在口腔中的饱满度和分量感&#xff0c;品酒者常用“轻盈”“厚重”“适中”等词汇来形容。所以&#xff0c;云仓酒庄的品牌雷盛红酒分享在葡萄酒分类中还有一个类型&#xff0c;就是按照酒体进行分类。一般分为轻盈型、中等型、饱满型。 轻盈型&#xff1…

海外https代理ip如何保障信息安全?该怎么选择?

海外https代理ip是指通信协议为https的海外真实网络地址ip&#xff0c;通常应用在各种跨境业务中。 一、什么是HTTPS协议 HTTP协议是一个应用层协议&#xff0c;通常运行在TCP协议之上。它是一个明文协议&#xff0c;客户端发起请求&#xff0c;服务端给出响应的响应。由于网…

表单邮箱密码登录 原生+Jquery实现

文章目录 效果代码邮箱验证正则表达式HTMLCSS JS 效果 正确密码为&#xff1a;123456 点击登录按钮校验。 代码 表单校验 - CodeSandbox 邮箱验证正则表达式 /(?:[a-z0-9!#$%&*/?^_{|}~-](?:\.[a-z0-9!#$%&*/?^_{|}~-])*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1…

Excel表中合并两个Sheet的方法?

按AltF11&#xff0c;调出Visual Basic 界面。 在左侧窗口中&#xff0c;右键选择“插入”—“模块”&#xff1a; 将如下代码粘贴进去&#xff0c;点击运行按钮&#xff0c;完成数据表合并。 Sub MergeAllSheetsInThisWorkbook() On Error Resume Next Application.ScreenU…

JOSEF约瑟 热过载保护继电器 JR36-160,整定值100-160A

系列型号 JR36-20 1.0-1.6A热继电器 JR36-20 0.25-0.35A热继电器 JR36-20 0.32-0.5A热继电器 JR36-20 0.45-0.72A热继电器 JR36-20 0.68-1.1A热继电器 JR36-20 1.5-2.4A热继电器 JR36-20 2.2-3.5A热继电器 JR36-20 3.2-5A热继电器 JR36-20 4.5-7.2A热继电器 JR36-20 …

【Python 训练营】N_1 验证密码

N_1 验证密码 题目 设计一个用户密码验证程序&#xff0c;要求密码输入只有3次机会&#xff0c;且密码中不能包含”*”字符。 分析 需要考虑3个问题&#xff1a;验证次数、特殊字符和正误密码判断&#xff1b;验证次数需要使用循环&#xff0c;3个问题需要用到分支结构&…

客户案例:保障高校邮件安全,守护教育信息安全堡垒

客户背景 电子科技大学&#xff08;以下简称“电子科大”&#xff09;&#xff0c;位于四川省成都市&#xff0c;是一所历史悠久、实力雄厚的综合性工业大学。作为我国重点建设的双一流高校&#xff0c;电子科大在国内外均享有盛誉&#xff0c;其学科涵盖了理、工、管、文等多…

7.5 Windows驱动开发:监控Register注册表回调

在笔者前一篇文章《内核枚举Registry注册表回调》中实现了对注册表的枚举&#xff0c;本章将实现对注册表的监控&#xff0c;不同于32位系统在64位系统中&#xff0c;微软为我们提供了两个针对注册表的专用内核监控函数&#xff0c;通过这两个函数可以在不劫持内核API的前提下实…

数组方法reduce的基础用法和奇怪的用法

Array.prototype.reduce 是 JavaScript 数组方法之一&#xff0c;用于累积数组的各个值&#xff0c;将其简化为单个值。下面是一些基础用法和一些可能被认为奇怪或不太常见的用法&#xff1a; 基础用法&#xff1a; 数组求和&#xff1a; const numbers [1, 2, 3, 4, 5]; c…

Android runtime层是如何通过缩减代码来缩减内存的

文章目录 前言&#xff1a;Android 在设备上改进内存的秘密优化编译器101代码大小改进消除写入障碍隐式暂停检查合并回调其他优化改进代码下沉循环优化消除死代码 – SimplifyAlwaysThrows加载存储消除 – 使用 try catch 块加载存储消除 – 使用释放/获取操作新的内联启发式不…

递归回溯剪枝-子集

LCR 079. 子集 - 力扣&#xff08;LeetCode&#xff09; 方法一 1. 决策树&#xff1a;对于决策树&#xff0c;思考的角度不同&#xff0c;画出的决策树也会不同&#xff0c;这道题可以从两个角度来画决策树。 2. 考虑全局变量的使用&#xff1a; 使用全局变量 List<List&…

Python 基础【五】--数据类型-序列【2023.11.24】

1.定义 Python 中的序列是一块可存放多个值的连续内存空间&#xff0c;所有值按一定顺序排列&#xff0c;每个值所在位置都有一个编号&#xff0c;称其为索引&#xff0c;我们可以通过索引访问其对应值。 list1 [Google, Runoob, 1997, 2000] list2 [1, 2, 3, 4, 5 ] list3…