【线性表的查找,线性表插入,线性表的删除,线性表的链式表示和实现】

news2025/3/14 20:49:26

文章目录

  • 线性表的查找
  • 线性表插入
  • 线性表的删除
  • 线性表的链式表示和实现
    • 1.单链表,双链表,循环列表
    • 2.头指针,头结点和首元结点
    • 3.链表的存储结构特点

线性表的查找

int LocateElem(Sqlist L,ElemType e){
//在线性表L中查找值为e的数据元素,返回其序号(是第几个元素)
	for(i = 0;i < L.length;i++)
		if(L.elem[i] = = e) return i + 1;//查找成功返回其序号
			return 0;//查找失败,返回0
}

线性表插入

Status ListInsert_Sq(SqList &L,int i,ElemType){
	if(i < 1 || i > L.length + 1)	return ERROR;//i值不合法
	if(L.length == MAXSIZE)	return ERROR;//当前存储空间已满
	for(j = L.length - 1;j >= i-1;j--)
		L.elem[j+1] = L.elem[j];	//插入位置及以后的元素后移
	L.elem[i-1] = e;	//将新元素e放入第i个位置
	L.length++;		//表长加一
	return OK;
	
}

线性表的删除

Status ListDelete Sq(SqList &L,int i){
	if((i<1)||(i>L.length))	return ERROR;
	for(j=i;j<=L.length-1;j++)
		L.elem[j-1]=L.elem[j];	//被删除元素之后的元素前移
		L。length--;
	return OK;
}

删除算法演示:
①删除位置在最后(直接删除)
②删除位置在中间(找到要删除的,后面的元素覆盖前面的元素)
③删除位置在最前面(从第二个元素到最后一个元素一直覆盖)

线性表的链式表示和实现

1.用一组物理位置任意的存储单元来存放线性表的数据元素。
2.这组存储单元可以是连续的,也可以是不连续的,甚至可以是零散分布在内存中的任意位置的。
3.链表的逻辑次序和物理次序不一定相同。

单链表是由头指针唯一确定,因此单链表可以用头指针的名字来命名。

对数据元素来说,除了存储本身的信息之外,还需存储指示其直接后继的信息。这两部分组成了数据元素的存储映像,成为结点
结点包括两个域,集中存储数据元素信息的域称为数据域,存储直接后继存储位置的域叫做指针域。n个节点的存储映像链接成为一个链表。又因为此链表的每个节点中只包含一个指针域,故称为线性链表和单链表。

1.单链表,双链表,循环列表

  • 结点只有一个指针域的链表,称为单链表或线性链表。

在这里插入图片描述

  • 结点有两个指针域的链表,称为双链表
    在这里插入图片描述

  • 首尾相接的链表称为循环链表
    在这里插入图片描述

2.头指针,头结点和首元结点

在这里插入图片描述

头指针:是指向链表的第一个指针。
首元结点:是指链表中存储的第一个数据元素a1的结点。
头结点:是在链表的首元结点之前附设的一个结点。

如何表示一个空表
无头结点,头指针为空时表示空表。
有头结点,当头节点的指针域为空时表示空表。

在链表中设置头结点的好处
便于首元结点和空表的处理。

3.链表的存储结构特点

存储位置任意(顺序存取法)
通过头指针找到链表,并通过每个节点的指针域依次向后顺序扫描其节点。

typedef struct Lnode{//声明结点的类型和指向结点的指针类型
	ElemType	data;//结点的数据域
	struct	Lnode	*next;//结点的指针域
}Lnode,*LinkList;	//LinkList为指向结构体Lnode的指针类型。

定义链表:LinkList L;
定义结点指针p:LNode *p;LinkList p;

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

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

相关文章

jmeter(三十三):阶梯线程组Stepping Thread Group,并发线程Concurrency Thread Group

Stepping Thread Group参数详解 this group will start:表示总共要启动的线程数;若设置为 100,表示总共会加载到 100 个线程first,wait for:从运行之后多长时间开始启动线程;若设置为 0 秒,表示运行之后立即启动线程then start:初次启动多少个线程;若设置为 0 个,表示…

实验室设备modbus小结

背景&#xff1a; 大概花1个月&#xff0c;后端代码量再1W行多点&#xff0c;不同厂商的指令不同需要定制化开发。参与了设备的数据采集工作&#xff0c;当然常规的设备管理、权限就不重点展开。 都是物联网相关&#xff0c;但是还是有所不同。 之前做过海尔的U home相关的项目…

京东AIGC实战项目复盘;第一门AI动画系统课程;百川智能启动2024校园招聘;Kaggle 2023 AI前沿报告 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f525; 李彦宏宣布「文心大模型4.0」正式发布&#xff0c;并开启邀请测试 10月17日&#xff0c;李彦宏在百度世界2023上宣布「文心大模型4.0」…

微信小程序 —— 会议OA项目首页布局与Mock数据交互

14天阅读挑战赛如果世界上有奇迹&#xff0c;那一定是努力的另一个名字。 目录 一、小程序布局 1.1 Flex布局 1.2 Flex属性 二、OA会议首页搭建 2.1 首页底部菜单 2.2 创建后端结口 2.3 Mock模拟数据 2.4 首页轮播图搭建 2.5 首页内容搭建 一、小程序布局 1.1 Flex布…

SpringBoot+Mybatis实现多数据源+分页

1 主要依赖版本 &#xff08;1&#xff09;SpringBoot 2.7.8 &#xff08;2&#xff09;Mybatis 2.2.2 &#xff08;3&#xff09;Pagehelper 1.3.0 &#xff08;4&#xff09;MySQL 8.0.26 &#xff08;5&#xff09;Oracle 11.2.0.3 2 概述 &#xff08;1&#xff09;…

Linux内核8. 进程地址空间

进程地址空间也就是每个进程所使用的内存&#xff0c;内核对进程地址空间的管理&#xff0c;也就是对用户态程序的内存管理。 主要内容&#xff1a; 地址空间(mm_struct)虚拟内存区域(VMA)地址空间和页表 1. 地址空间(mm_struct) 地址空间就是每个进程所能访问的内存地址范围…

React高级特性之RenderProps

一、概念 renderProps是另外一个能实现类似于HOC这种多个组件抽离公共组件逻辑的方式。 二、例子 import React from react import PropTypes from prop-typesclass Mouse extends React.Component {constructor(props) {super(props)this.state { x: 0, y: 0 }}handleMouse…

日志技术快速入门

1、创建Maven项目 这里不再说如何创建Maven项目 2、导入相关依赖 <dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.12</version></dependency>3、创建配置文件 在re…

Spring源码解析——事务增强器

正文 上一篇文章我们讲解了事务的Advisor是如何注册进Spring容器的&#xff0c;也讲解了Spring是如何将有配置事务的类配置上事务的&#xff0c;实际上也就是用了AOP那一套&#xff0c;也讲解了Advisor&#xff0c;pointcut验证流程&#xff0c;至此&#xff0c;事务的初始化工…

强化学习------Policy Gradient算法

目录 简介PG算法原理效果&#xff1a;参考 简介 之前的QLearning DQN Sarsa都是通过计算动作得分来决策的&#xff0c;我们是在确定了价值函数的基础上采用某种策略&#xff0c;即Value-Based&#xff0c;通过先算出价值函数&#xff0c;再去做决策。而Policy Gradient算法是一…

云计算:shell脚本

shell脚本&#xff0c;会极大减少重复性工作&#xff0c;缩短很大时间。 脚本每个人都可以不一样&#xff0c;只要实现就可以。 注意&#xff1a;要多思考&#xff0c;把思路锻炼好。以后就可以写各种程序。 shell语言 学完shell之后&#xff0c;对Linux理解更深刻&#xff…

在调试器下看微信[如何耗电]

在今天这样干什么都离不开手机的时代里&#xff0c;手机的待机时间太重要了。特别是对于我这个不喜欢带充电宝出门的人来说&#xff0c;一旦看到手机电量低于20%&#xff0c;立刻就精神紧张了&#xff0c;因为一切信息都在手机里&#xff0c;如果手机没电&#xff0c;那么就失联…

[SQL | MyBatis] MyBatis 简介

目录 一、MyBatis 简介 1、MyBatis 简介 2、工作流程 二、入门案例 1、准备工作 2、示例 三、Mapper 代理开发 1、问题简介 2、工作流程 3、注意事项 4、测试 四、核心配置文件 mybatis-config.xml 1、environment 2、typeAilases 五、基于 xml 的查询操作 1、…

通过stream对list集合中对象的多个字段进行去重

记录下通过stream流对list集合中对象的多个字段进行去重&#xff01; 举个栗子&#xff0c;对象book&#xff0c;我们要通过姓名和价格这两个字段的值进行去重&#xff0c;该这么做呢&#xff1f; distinct&#xff08;&#xff09;返回由该流的不同元素组成的流。distinct&am…

第五届芜湖机器人展,正运动助力智能装备“更快更准”更智能!

■展会名称&#xff1a; 第十一届中国(芜湖)科普产品博览交易会-第五届机器人展 ■展会日期 2023年10月21日-23日 ■展馆地点 中国ㆍ芜湖宜居国际博览中心B馆 ■展位号 B029 正运动技术&#xff0c;作为国内领先的运动控制企业&#xff0c;将于2023年10月21日参加芜湖机…

查看双翌视觉软件版本号

查看双翌视觉软件版本号 MasterAlign视觉对位软件 MasterAlign视觉对位软件的版本号在软件界面的右下角&#xff0c;如下图所示&#xff1a; 进入界面查看右下角编号尾号为O的代表旧协议版本 而编号尾号为N的则为新协议版本。 WiseAlign视觉对位软件 打开WiseAlign视觉对位软…

靶机 Chill_Hack

Chill_Hack 信息搜集 存活检测 arp-scan -l 详细扫描 扫描结果 显示允许 ftp 匿名链接 FTP 匿名登录 匿名登陆 ftp 下载文件并查看 anonymous10.4.7.139下载命令 get note.txt查看文件 译 Anurodh告诉我&#xff0c;在命令 Apaar 中有一些字符串过滤后台扫描 扫描结果…

【算法挨揍日记】day16——525. 连续数组、1314. 矩阵区域和

525. 连续数组 525. 连续数组 题目描述&#xff1a; 给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组&#xff0c;并返回该子数组的长度。 解题思路&#xff1a; 本题的元素只有0和1&#xff0c;根据题目意思&#xff0c;我们可以把题目看成找一段最…

Educational Codeforces Round 156 (Rated for Div. 2)

C. Decreasing String 分析&#xff1a;暴力做法是很容易想到的&#xff0c;但时间复杂度为O(n2) 这是我打cf以来看到的最好的题解。 #include<cstdio> #include<set> #include<list> #include<queue> #include<math.h> #include<stdlib.h&g…

5.DApp-前端网页怎么连接MetaMask

题记 在前端网页连接metamask&#xff0c;以下是全部操作流程和代码。 编写index.html文件 index.html文件如下&#xff1a; <!DOCTYPE html> <html> <head> <title>My DApp</title> <!--导入用于检测Metamask提供者的JavaScript库--> &l…