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

概念大合集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://xiahunao.cn/news/2870052.html

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

相关文章

21 OpenCV 直方图均衡化

文章目录 直方图概念均衡的目的equalizeHist 均衡化算子示例 直方图概念 图像直方图,是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称为图像直方图-直方图。直方图反映了图像灰度的分布情况。 均衡的目的…

重新认识BIO、NIO、IO多路复用、Select、Poll、Epollo它们之间的关系

目录 一、背景 二、名词理解 (1)BIO (2)NIO (3)IO多路复用 (4)Select、Poll、Epollo 三、他们之间的关系总结 一、背景 最近又在学习网络IO相关知识,对我们常说的…

C++中的friend关键字

C中的friend关键字允许其他类或函数访问私有和受保护成员。使用friend是一种破坏封装的做法,但在某些情况下,它提供了必要的灵活性。 friend函数 定义:允许一个普通函数访问类的私有(private)和受保护(prot…

Android FrameWork 学习路线

目录 前言 学习路线: 1.基础知识 2、AOSP 源码学习 3. AOSP 源码编译系统 4. Hal与硬件服务 5.基础组件 6. Binder 7. 系统启动过程分析 8. 应用层框架​编辑 9. 显示系统 10. Android 输入系统 11. 系统应用 前言 Android Framework 涉及的行业相当广…

Unity2019.2.x 导出apk 安装到安卓Android12+及以上的系统版本 安装出现-108 安装包似乎无效的解决办法

Unity2019.2.x 导出apk 安装到安卓Android12及以上的系统版本 安装出现-108 安装包似乎无效的解决办法 导出AndroidStudio工程后 需要设置 build.gradle文件 // GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAINbuildscript {repositor…

【数据结构】二叉树OJ题(C语言实现)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ 🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿&#x1…

android studio 连接mumu模拟器调试

1、打开mumu模拟器 2、在Android Studio 中 控制台 cd 到 sdk 目录下 platform-tools 文件夹,有一个adb.exe 可运行程序 一般指令: adb connect 127.0.0.1:7555 但是这个执行在window环境下可能会报错 解决方法是在 adb 之前加 ".\", 问题…

nRF52832——内部温度传感器与随机数产生

nRF52832——内部温度传感器与随机数产生 内部温度传感器温度传感寄存器温度传感器电气特征温度传感器库函数编程 随机数产生器随机数发生器寄存器随机数发生器库函数编程库函数使用流程RNG 工程搭建使用 内部温度传感器 在 nrf52xx 系列芯片内部,包含一个内部温度…

IDEA创建Sping项目只能勾选17和21,没有Java8?

解决办法: 替换创建项目的源 我们只知道IDEA页面创建Spring项目,其实是访问spring initializr去创建项目。故我们可以通过阿里云国服去间接创建Spring项目。将https://start.spring.io/或者http://start.springboot.io/替换为 https://start.aliyun.com/

使用 Python 编写程序保护您的眼睛

眼睛,是心灵的窗户,生活在数字时代的我们,眼睛首当其冲地承受冲击。盯着电脑屏幕成为我们日常工作和学习的一部分,导致用眼过度。那如何减少对眼睛的伤害,应该如何保护眼睛? 用眼应控制时间,自…

C语言字符函数和字符串函数详解

Hello, 大家好,我是一代,今天给大家带来有关字符函数和字符串函数的有关知识 所属专栏:C语言 创作不易,望得到各位佬们的互三呦 一.字符函数 在C语言中有一些函数是专门为字符设计的,这些函数的使用都需要包含一个头文…

如何用人工智能实现客户服务营销?实用指南与关键技巧一网打尽

在不断发展的营销领域,创意是成功营销活动的生命线。火花点燃兴趣,吸引受众,推动参与。但是,如果有一种方法可以利用技术来提升创意,那会怎样呢?生成式人工智能(Generative AI)是一种…

数据结构与算法----复习Part 16 (并查集)

本系列是算法通关手册LeeCode的学习笔记 算法通关手册(LeetCode) | 算法通关手册(LeetCode) (itcharge.cn) 目录 并查集(Union Find) 基于数组实现的快速查询并查集 基于森林实现的快速合并并查集 路径…

51单片机-AT24C02(I2C总线)

目录 一,介绍及元件工作原理 7.时序结构(重要) 8.i2C总线数据帧(重要) 二,应用 一,介绍及元件工作原理 1.元件介绍 2.存储器 3.地址总线和数据总线 地址总线只能一次选中一行 4.引脚及应用…

三次握手seq和ack的流程 TCP协议栈seq和ack深层理解

☆ 大家可以把想了解的问题在评论发给我?我会根据问题补充到后面 ☆ 三次握手seq和ack的流程 是的,在TCP/IP协议中,三次握手过程确实涉及到序列号(Sequence Number, 简称Seq)和确认号(Acknowledgment Number, 简称Ack)的交换。这个过程是为了建立可靠的连接,确保数据能…

Python基础(七)之数值类型字典

Python基础(七)之数值类型字典 1、简介 字典(dict),Dictionary:是一种可变类型,可以存储任意类型的元素,如列表、字符串、元组等。 字典是无序的,所以不支持索引和切片。字典以键值…

CSS中如何设置单行或多行内容超出后,显示省略号

1. 设置超出显示省略号 css设置超出显示省略号可分两种情况: 单行文本溢出显示省略号…多行文本溢出显示省略号… 但使用的核心代码是一样的:需要先使用 overflow:hidden;来把超出的部分隐藏,然后使用text-overflow:ellipsis;当文本超出时…

软考 系统架构设计师之回归及知识点回顾(7)

接前一篇文章:软考 系统架构设计师之回归及知识点回顾(6) 11. 云计算 背景 大数据和云计算已成为IT领域的两种主流技术。“数据是重要资产”这一概念已成为大家的共识,众多公司争相分析、挖掘大数据背后的重要财富。同时学术界、…

哔哩哔哩后端Java一面

前言 作者:晓宜 个人简介:互联网大厂Java准入职,阿里云专家博主,csdn后端优质创作者,算法爱好者 最近各大公司的春招和实习招聘都开始了,这里分享下去年面试B站的的一些问题,希望对大家有所帮助…

第十二届蓝桥杯EDA省赛真题分析

前言: 第十二届蓝桥杯EDA比赛用的是AD软件,从第十四届起都是使用嘉立创EDA专业版,所以在这里我用嘉立创EDA专业版实现题目要求。 一、省赛第一套真题题目 主观题整套题目如下: 试题一:库文件设计(5分&am…