数据结构的概念大合集02(线性表)

news2024/11/24 16:45:43

概念大合集02

  • 1、线性表及其逻辑结构
    • 1.1 线性表的定义
    • 1.2 线性表的基本操作
  • 2、线性表的顺序存储结构
    • 2.1 顺序表
  • 3、线性表的链式存储
    • 3.1 链表
      • 3.1.1 头结点(头指针),首指针,尾指针,尾结点
      • 3.1.2 单链表
      • 3.1.3 双链表
      • 3.1.4 循环链表
        • 3.1.4.1 循环单链表
        • 3.1.4.2 循环双链表
  • 4、顺序表与链表的比较

1、线性表及其逻辑结构

1.1 线性表的定义

是具有相同特性的数据元素的一个有限序列(即有限,且有序)
一般表示为L = (a1,a2,a3,a4,…,an-1,an)
线性表是表示数据元素之间的逻辑结构,即不考虑在计算机中的具体实现。

1.2 线性表的基本操作

函数名函数作用
InitList(&L)初识化线性表,构造一个空列表
DestroyList(&L)销毁线性表,释放为线性表L分配的内存空间
ListEmpty(L)判断线性表是否为空表,若L为空表,则返回true,否则返回false
ListLength(L)输出线性表的长度,返回L中元素的个数
DisList(L)输出线性表,当线性表L不为空时,顺序输出L中的个元素值
GetElem(L,i,&e)按序号求线性表中的元素,用e返回L中第i(1~n-1)个元素值
LocateElem(L,e)按元素值查找,返回L中的第一个值与e相等的元素的序号
ListInsert(&L,i,e)插入元素,在L的第i个位置插入一个新元素e
ListDelete(&l,i,&e)删除元素,删除L的第i个元素,并用e返回该元素值

注:具体的函数表现会在另外的文章里说明,本文章只对概念进行阐述

2、线性表的顺序存储结构

2.1 顺序表

线性表的所有元素按照其逻辑顺序依次存储到计算机的一篇连续的存储空间当中,即在逻辑结构上面相邻的两个元素在内存空间上也相邻,通常把这种结构称为顺序表,通常用数组的方式表现。

请添加图片描述

3、线性表的链式存储

链式存储不需要在逻辑结构上相邻的元素在物理位置上也相邻,这是通过指针来实现的

3.1 链表

链表是将线性表中的元素通过指针连接起来的一种表现形式,链表中的每个元素称为结点,一个结点由数据元素(数据域)和指向后继结点的指针(指针域)构成,从而实现线性表的链式存储结构。

3.1.1 头结点(头指针),首指针,尾指针,尾结点

头结点:通常,链表都会带上一个头结点,来表示唯一标识,即头结点的存在,是为了区别链表,所以,头指针里面一般只有指向首结点的指针,不会存放链表的第一个元素

首指针:指向首节点的指针,而首节点用来存放链表的第一个元素

尾指针:指向尾结点的指针

尾结点:当尾结点的指针域不需要指向任何一个结点时,则将其后继指针指向NULL,比如单链表和双链表。

3.1.2 单链表

在单链表当中,每个结点由一个数据域和一个指针域构成,其中,头结点不存放元素,只存放指向首结点的指针,尾结点的指针指向NULL。
请添加图片描述

3.1.3 双链表

在双链表里面,每个结点含有一个数据域和两个指针域,一个指向后继结点,一个指向前驱结点
请添加图片描述

3.1.4 循环链表

3.1.4.1 循环单链表

将单链表改为循环单链表的过程,是将它的尾结点的next指针域由原来为空改为指向头结点,让整个单链表形成一个环。由此,从表中任一结点出发均可找到链表中其他结点
请添加图片描述

3.1.4.2 循环双链表

把双链表改为循环双链表的过程是将它的尾结点的next指针域由原来为空改为指向头结点,把头结点的prior指针域改为指向尾结点,使整个双链表形成两个环。
请添加图片描述

4、顺序表与链表的比较

顺序表:在完成插入或删除元素这类操作时,比较费时;

链表:在完成插入或删除元素这类操作时,只需要修改指针域的指向即可,方便省时

 
注:
本文将主要探讨线性表的概念,其中提及的各个函数操作已经发布,欢迎朋友们继续观看。

本篇文章的相关算法
数据结构大合集02——线性表的相关函数运算算法

上一篇文章
数据结构的概念大合集01(含数据结构的基本定义,算法及其描述)

下一篇文章
数据结构的概念大合集03(栈)

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

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

相关文章

Linux第79步_使用自旋锁保护某个全局变量来实现“互斥访问”共享资源

自旋锁使用注意事项:自旋锁保护的“临界区”要尽可能的短。 因此,在open()函数中申请“spinlock_t自旋锁结构变量”,然后在release()函数中释放“spinlock_t自旋锁结构变量”,这种方法就行不通了。如果使用一个变量“dev_stats”来表示“共享…

Nanya(南亚科技)DRAM芯片选型详解

一、DRAM产品选型 普通SDRAM只在时钟的上升期进行数据传输,DDR内存能够在时钟的上升期和下降期各传输一次数据,因此性能翻倍,被称为双倍速率同步动态随机存储器。因此DDR内存可以在与SDRAM相同的总线频率下达到更高的数据传输率。DDR是一种掉…

Pygame AttributeError no attribute ‘display‘问题及其解决方法

目录 前言 错误原因 解决方法 1. 确保正确安装 Pygame 2. 检查 Python 路径和 Pygame 模块位置 3. 修复模块命名冲突 4. 检查代码错误 5. 检查 Pygame 版本兼容性 代码示例 总结 前言 Pygame 是一个非常受欢迎的 Python 游戏开发库,它提供了丰富的功能和…

Linux 学习必备:CentOS 技能提升一站式平台!

介绍:CentOS是一种广泛使用的Linux发行版,特别受到企业用户的青睐。 首先,CentOS的全称是Community Enterprise Operating System,中文意思是“社区企业操作系统”。它起源于Red Hat Enterprise Linux (RHEL)的源代码,…

极智压缩 ——帮你高清无损压缩 JPG/PNG/GIF 图片!

引言 图片太大怎么办?图片该如何压缩?压缩后图片为什么变模糊了?屏幕前的你是不是经常被这些问题所困扰,腾讯云数据万象推出的图片极智压缩服务,可以帮你高清无损压缩 JPG/PNG/GIF 图片,解决你95%以上的图片…

解决虚拟机Linux ens33 没有 IP 地址

解决方法: 先进入 root 模式 sudo su 查看目录 ls /etc/sysconfig 找到上述文件夹 ls /etc/sysconfig/network-scripts/ 用 vim 打开 ifcfg-ens33 这个文件(不都是这个名字,按这个方法找到这个文件就行) vim /etc/sysconfig/netw…

学习笔记-华为IPD转型2020:3,IPD的实施

3. IPD的实施 1999 年开始的 IPD 转型是计划中的多个转型项目中的第一个(Liu,2015)。华为为此次转型成立了一个专门的团队,从大约20人开始,他们是华为第一产业的高层领导。董事会主席孙雅芳是这个团队的负责人。该团…

【算法与数据结构】深入二叉树实现超详解

文章目录 📝前言🌠 接口函数✏️ 实现函数🌉创建树的新节点🌠通过前序遍历的数组构建二叉树🌉包装通过前序遍历的数组构建二叉树🌠二叉树的销毁🌠层次遍历🌠第一种实现:不…

如何在尽量不损害画质的前提下降低视频占内存大小?视频格式科普及无损压缩软件推荐

大家好呀,相比大家都有对视频画质和体积的追求和取舍,那么,如何才能在不牺牲画质的前提下,尽可能的将视频大小降低到极致呢? 首先我们要了解视频的构成,要想降低视频的体积大小,我们可以从以下几…

Learn OpenGL 22 高级光照与Gamma校正

高级光照 Blinn-Phong 冯氏光照不仅对真实光照有很好的近似,而且性能也很高。但是它的镜面反射会在一些情况下出现问题,特别是物体反光度很低时,会导致大片(粗糙的)高光区域。下面这张图展示了当反光度为1.0时地板会…

品牌方年度抖音店铺打造流量运营孵化方案

【干货资料持续更新,以防走丢】 品牌方年度抖音店铺打造流量运营孵化方案 部分资料预览 资料部分是网络整理,仅供学习参考。 PDF共120页(完整资料包含以下内容) 目录 抖音年度短视频直播运营规划方案 1. 帐号视频发布规划 问…

55、服务攻防——数据库安全RedisHadoopMysql未授权访问RCE

文章目录 常见服务应用的安全测试: 配置不当——未授权访问安全机制——特定安全漏洞安全机制——弱口令爆破攻击 应用服务安全测试流程: 判断服务开放情况——端口扫描&组合猜解等 端口扫描:服务开放,绑定端口没开放&#…

浅谈前端路由原理hash和history

1、认识前端路由 本质 前端路由的本质,是监听 url 地址或 hash 值的改变,来切换渲染对应的页面组件 前端路由分为两种模式 hash 模式 history 模式 两种模式的对比 2、hash 模式 (1)hash 定义 hash 模式是一种把前端路由的路…

管理类联考–复试–英文面试–问题--规划介绍原因做法--纯英文版

借鉴 https://www.bilibili.com/video/BV1Dk4y187zN/?p4&spm_id_from333.880.my_history.page.clickhttps://www.bilibili.com/video/BV1Dk4y187zN/?p4&spm_id_from333.880.my_history.page.click https://ttsreader.com/zh/https://ttsreader.com/zh/ 规划 视频版…

MyBatis3源码深度解析(十七)MyBatis缓存(一)一级缓存和二级缓存的实现原理

文章目录 前言第六章 MyBatis缓存6.1 MyBatis缓存实现类6.2 MyBatis一级缓存实现原理6.2.1 一级缓存在查询时的使用6.2.2 一级缓存在更新时的清空 6.3 MyBatis二级缓存的实现原理6.3.1 实现的二级缓存的Executor类型6.3.2 二级缓存在查询时使用6.3.3 二级缓存在更新时清空 前言…

Java基础 学习笔记八

控制语句 分支语句 switch switch语句完整格式 expression 中执行完必须是个值并且必须是 int 或者 枚举 或者 字符串类型break语句只要执行,switch就要结束default语句不是必须的,但是建议写上,这样程序更加健壮 switch(expression){//exp…

浅谈 电脑和车的对比

https://www.zhihu.com/question/547115488 电脑CPU与汽车发动机有哪些相同点与不同点? - 知乎 就想机械硬盘一样 我们的技术可能达不到 但是我们可以弯道超车 比如长江存储的SSD可以取代 以前的机械硬盘

如何基于香橙派AIpro开发AI推理应用

简介 香橙派AIpro开发板采用昇腾AI技术路线,接口丰富且具有强大的可扩展性,提供8/20TOPS澎湃算力,可广泛使用于AI边缘计算、深度视觉学习及视频流AI分析、视频图像分析、自然语言处理等AI领域。通过昇腾CANN软件栈的AI编程接口,可…

深度学习pytorch——统计属性(持续更新)

矩阵范数 vs 向量范数 向量范数 1-范数:所有元素的绝对值之和。 2-范数:所有元素的平方之和,在开根号。 p-范数:所有元素的绝对值的p次方之和,再求其1/p次方。 例:向量X[2, 3, -5, -7] ,求向…

深入理解Linux内核页表映射分页机制原理

深入理解Linux内核页表映射分页机制原理 前言 操作系统用于处理内存访问异常的入口操作系统的核心任务是对系统资源的管理,而重中之重的是对CPU和内存的管理。 为了使进程摆脱系统内存的制约,用户进程运行在虚拟内存之上,每个用户进程都拥…