04 |「链表」简析

news2024/11/16 5:21:50

前言

前言:研究一个数据结构的时候,首先讲的是增删改查。

文章目录

  • 前言
  • 一、链表简介
    • 1. 含义
    • 2. 节点组成
    • 3. 存储方式
      • 1)数据在内存中的存储方式
      • 2)单链表在内存中的存储方式
      • 3)双链表在内存中的存储方式
      • 4)循环链表在内存中的存储方式
    • 4. 特点
  • 二、链表的操作
    • 1. 插入数据
      • 1)头部插入
      • 2)中间插入
      • 3)尾部插入
    • 2. 删除数据
      • 1)删除头节点
      • 2)删除中间节点
      • 3)删除尾节点

一、链表简介

1. 含义

  • 链:链子。
  • 表:数据集合。按照一定顺序排列的元素集合为表。
  • 链表的概念:链表中存储的是数据,按照一定顺序排列,每一个数据的前面的数据叫做前驱,后面的数据叫做后继。

在这里插入图片描述

2. 节点组成

链表中的每个节点都是由两部分组成。一部分为数据(节点存放的值),另一部分为 地址(下一个节点的地址),节点与节点之间通过指针连接起来。

3. 存储方式

1)数据在内存中的存储方式

  • 每个数据在内存中存储都需要占据一块内存空间,任何一块内存空间都有相应的地址。

  • 根据元素首地址和数据类型,其中数据类型规定了占据的内存空间的字节大小。

  • 通过元素首地址和定义变量的数据类型就可以确定数据所占唯一的内存空间大小,同时找到对应的内存空间,然后从内存空间中读写数据即可。

在这里插入图片描述

2)单链表在内存中的存储方式

  • 链表区别于数组的存储方式,数组在内存中是集中存放的,链表在内存中是散乱存放的。

  • 只要内存中有位置,链表节点就可以存放,节点间通过指针连接。

在这里插入图片描述

3)双链表在内存中的存储方式

在这里插入图片描述

一个节点内部组成如下图所示。
在这里插入图片描述

4)循环链表在内存中的存储方式

在这里插入图片描述

4. 特点

  • 插入删除数据效率高,读取(查找)数据效率低。

  • 查找数据:需要从头结点开始,需要挨个进行判断,效率低。

  • 更新数据:需要先查找到数据(查找),从头结点开始依次判断,找到之后替换数据。

二、链表的操作

1. 插入数据

1)头部插入

新节点的 next 指向原链表的头结点,这样新节点就为当前新链表的头结点。
其中 “指向”是一个逻辑概念,怎么用代码实现,通过给 next 指针赋值的方式实现更改指向。
在这里插入图片描述

2)中间插入

将要插入的节点的 next 指向后一个节点,前一个节点 next 指向要插入的节点。

在这里插入图片描述

3)尾部插入

在这里插入图片描述

2. 删除数据

1)删除头节点

直接将头节点删除,第二节点成为头节点。将 Head 指针往后移动一位。

2)删除中间节点

将前一个节点的 next 指向后一个节点。

在这里插入图片描述

3)删除尾节点

直接将尾节点的前一个节点的 next 置为 NULL 即可。

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

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

相关文章

python-38-降低内存开销的python迭代器

【进阶Python】第五讲:迭代器与生成器 python 迭代器和生成器 迭代是Python中常用且非常强大的一个功能,它可以用于访问集合、列表、字符串、字典等数据结构的元素。 我们经常使用循环和条件语句,我们也清楚哪些是可以迭代访问,但…

结构型模式-代理模式

1.概述 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。 Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译…

Nacos 配置中心源码讲解

目录 1. 配置中心的优点 2. 配置模型结构 3. 配置中心 Server 端实现原理 3.1 新建配置 / 发布配置 3.2 查询配置 4. 配置中心 Client 端实现原理 4.1 发布配置 4.2 查询配置 4.3 监听机制 Listener 1. 配置中心的优点 运行时动态修改系统参数配置,不用重启…

排序算法解析:快排,归并 (全)

一、快排原始快排 算法思想:ps:排序的效果其实就是使一个数列中的每个数都满足左边数比它小、右边数比它大(假设升序)。接下来我们来了解快排:多次递归遍历,每单次遍历,设定一个限定值&#xff…

02 |「数据结构、逻辑结构、物理结构」基本概念简析

前言 前言:简析数据结构、逻辑结构、物理结构。 文章目录前言一、数据结构1. 简介2. 数据3. 结构4. 分析5. 分类1)线性结构(线性表)2)树结构3)图结构二、逻辑结构与物理结构1. 为什么要有逻辑结构和物理结构…

SpringBoot+Vue--前端搭建-笔记1

前端搭建 首先安装node.js(百度) 官网下载地址:http://nodejs.cn/download 以前写的关于npm 后端了解的npm_biubiubiu0706的博客-CSDN博客 安装Node.js淘宝镜像加速器(cnpm) npm install cnpm -g(可以不安装) #建议使用如下语句解决npm速度慢的问题 好比设置仓…

代码随想录算法训练营三期 day 24 - 回溯 (1) (补)

回溯算法理论基础 什么是回溯法 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯。所以以下讲解中,回溯函数也就是递归函数,指的都是一个函数。 回溯法的效率 回溯的本质是穷举&…

【手把手教你学51单片机】中断的优先级

注:本文章转载自《手把手教你学习51单片机》!因转载需要原文链接,故无法选择转载! 如若侵权,请联系我进行删除!上传至网络博客目的为了记录自己学习的过程的同时,同时能够帮助其他一同学习的小伙…

第四十三章 动态规划——最长单调序列模型

第四十三章 动态规划——最长单调序列模型一、最长单调序列模型1、模型母题2、思路分析(两种方法:DP,贪心)二、模型的应用1、AcWing 1017. 怪盗基德的滑翔翼(1)问题(2)分析&#xff…

C规范编辑笔记(十四)

往期文章: C规范编辑笔记(一) C规范编辑笔记(二) C规范编辑笔记(三) C规范编辑笔记(四) C规范编辑笔记(五) C规范编辑笔记(六) C规范编辑笔记(七) C规范编辑笔记(八) C规范编辑笔记(九) C规则编辑笔记(十) C规范编辑笔记(十一) C规范编辑笔记(十二) C规范编辑笔记(…

Linux进程学习【一】

✨个人主页: Yohifo 🎉所属专栏: Linux学习之旅 🎊每篇一句: 图片来源 🎃操作环境: CentOS 7.6 阿里云远程服务器 Perseverance is not a long race; it is many short races one after another…

Linux基本功系列之rename命令实战

文章目录一. rename 命令介绍二. 语法格式及常用选项三. 参考案例3.1 将当前目录下所有.cfg的文件,替换为.txt结尾3.2 将所有出现mufeng的部分都替换为mufeng13.3 将mufeng0开头都变成mufeng00开头3.4 rename支持正则表示式总结前言🚀🚀&…

2023-1-22 刷题情况

积水面积 先祝大家新年快乐,新的一年,万事如意。 题目描述 一组正整数,分别表示由正方体叠起的柱子的高度。若某高度值为 xxx,表示由 xxx 个正立方的方块叠起(如下图,0≤x≤50000 \le x \le 50000≤x≤5…

卷积神经网络进阶--基础知识

卷积神经网络进阶 b站课程链接碳基生物都能学会的神经网络(跳着看的) 因为我用的是pytorch,而该课程是用tenserflow的,所以主要记了一下理论 为什么要讲不同的网络结构 不同的网络结构解决的问题不同不同的网络结构使用的技巧不同…

【人工智能原理自学】卷积神经网络:打破图像识别的瓶颈

😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本文讲解卷积神经网络:打破图像识别的瓶颈,一起卷起来叭! 目录一、手写体识别二、“炼丹”一、手写体识别 在机器学习、神经网络领域&#…

【数据分析】(task4)数据可视化

note matplotlib的四个容器: Figure:顶层级,用来容纳子 Axes,一组具体绘图元素和画布(canvas)。 画板。Axes:matplotlib宇宙的核心,容纳了大量元素用来构造一幅幅子图,一…

【QT5.9】与MFC对比学习笔记-感悟篇【2023.01.22】

简介 在公司从事MFC的程序维护一年两个月,期间因为公司被QT告侵权对QT产生了抵触的心情。现在无奈要用到,需要抓紧学习了。 正文 1.数据模型 先说下刚用到的模型,模型也叫数据模型,也就是耳熟的MVC架构中的M(Model…

我用笨办法啃下了一个开源项目的源码!

目录 1、从最简单的源码开始:别幻想一步登天 2、循序渐进:先搞定底层依赖的技术 3、一定要以Hello World作为入口来阅读 4、抓大放小,边写注释边画图 5、反复三遍,真正理解源码 6、借力打力,参考源码分析书籍及博客 7…

研一寒假C++复习笔记--引用的使用

​​​​​​​ 目录 1--引用的基本语法 2--引用的注意事项 3--在函数参数中使用引用 4--引用作函数的返回值 5--引用的本质 6--常量引用 1--引用的基本语法 引用相当于给变量起别名&#xff0c;其基本语法如下&#xff1a; 数据类型 &别名 原名 # include <…

Linux操作系统之进程信号

代码存放在&#xff1a;https://github.com/sjmshsh/System-Call-Learn/tree/master/signal 我们先来看一张图&#xff0c;了解一下通过阅读本博客&#xff0c;你可以收获什么。 背景知识 首先我说明一点 信号 ! 信号量 我们这篇文章讲解的是信号&#xff0c;不是信号量 信…