链表介绍

2023-11-05

链表介绍

链表与顺序表一样,也属于线性表。

一个线性表是某类数据元素的一个集合,表里同时记录着元素之间的顺序关系。

线性表的数据之间有顺序关系,顺序关系分为两种,一种是物理有序,即数据物理存储的位置顺序与数据之间的顺序关系一致,另一种是逻辑有序,即数据之间的顺序关系是由某种逻辑关系(如指针)来决定的,与物理存储的位置无关。

顺序表是物理有序,而链表是逻辑有序。

一、链表简介

链表(Linked list)是一种线性表,链表中的数据存储在一个个的节点里,节点不一定是连续存储的,在每一个节点中,除了存储数据以外,还会存储下一个节点的位置信息(内存地址),根据此位置信息(链接)可以找到下一个节点。

在链表的每一个节点中,分为不同的存储区域,信息域(元素域)和链接域(引用域)。

信息域用来存储该节点中具体保存的数据。

链接域用来存储指向的节点的位置信息(内存地址)。

链表的“头”指向第一个节点,第一个节点是链表的头节点(首节点),从头节点出发,可以依次找到链表中的所有节点。

节点是分散存储的,每个节点的链接域都可以指向空,将这些节点链接成一个链表,就是从头节点开始,链接域依次指向下一个节点,形成一个链。

二、链表的分类

1. 单向链表

最简单的链表是单向链表。

单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域和一个链接域。链接域指向链表中的下一个节点,而最后一个节点的链接域指向一个空值。

2. 双向链表

双向链表又称双面链表,相对于单向链表,双向链表除了向后的链接域,还有向前的链接域。

每个节点包含三个域,一个信息域和两个链接域。一个链接域指向前一个节点,当此节点为第一个节点时,指向空值,另一个链接域指向下一个节点,当此节点为最后一个节点时,指向空值。

3. 单向循环链表

单向循环链表是将单向链表“首尾相连”。

单向链表中最后一个节点的链接域指向的是空,而单向循环链表中,最后一个节点的链接域指向链表的头节点,形成一个“环形”的链。

三、链表与顺序表的对比

顺序表是物理有序的,顺序表的构建需要申请连续的存储空间,在进行扩容时又需要进行数据的迁移,所以使用起来并不是很灵活。

链表是逻辑有序的,每个节点都可以单独存储,可以充分利用计算机内存空间,实现灵活的内存动态管理。但是,由于链表增加了结点的链接域(指针),空间开销比较大。

顺序表可以根据内存地址的关系(索引)快速读取到任意位置的数据。

链表不能快速地访问到指定数据,必须从头节点开始寻找。

除此之外,因为顺序表和链表的不同结构,对它们进行添加、删除数据等操作的原理不同,耗时也不同。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

链表介绍 的相关文章

  • Qt中IPC(进程间通信)的方式一:WM_COPYDATA消息

    数据复制消息WM COPYDATA是Windows中一个特殊的消息 通过这个消息能够在进程间传递数据 WM COPYDATA消息含两个參数WPARAM wParam和LPARAM lParam WPARAM和LPARAM是匈牙利命名法 历史
  • jQuery 改变样式

    1 要先引入jQuery js jQuery JavaScript Library v1 4 4 http jquery com Copyright 2010 John Resig Dual licensed under the MIT o
  • 参数非空校验

    参数非空校验 全为空返回true 否则返回false function checkParam var argLengthInit arguments length var argLength argLengthInit var count
  • Visual Studio 2019的安装教程

    注意 部分内容只面向学习C语言的同学 1 打开浏览器搜索 Microsoft官网 2 进入网站 3 点击右上角的 所有Microsoft 4 找到 开发人员与IT 一列中的 Visual Studio 并点击进入 5 点击下载 Visual
  • Linux之Docker环境搭建

    Docker 是一个开源的应用容器引擎 让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中 然后发布到任何流行的 Linux或Windows 机器上 也可以实现虚拟化 容器是完全使用沙箱机制 相互之间不会有任何接口 搭建开始 官方网址

随机推荐

  • 微信小程序隐私指引完整填写范本(开发者收集你选中的照片或视频信息,用于?)

    为了分辨用户 开发者将在获取你的明示同意后 收集你的微信昵称 头像 为了显示距离 开发者将在获取你的明示同意后 收集你的位置信息 开发者收集你的地址 用于获取位置信息 开发者收集你的发票信息 用于维护消费功能 为了用户互动 开发者将在获取你
  • TCP报文格式详解

    TCP报文由俩部分组成 TCP报头和TCP数据 TCP报文是TCP传输的数据单元 端口号 用来标识一台主机的不同进程 1 源端端口号 源端口和IP层解析出来的IP地址标识报文的发送地 同时也确定了报文的返回地址 2 对端端口号 表明了该数据
  • 《移动浪潮》读书笔记

    移动浪潮 一书深入浅出地解读了信息革命第五次浪潮即将为人们生活带来的巨变 首先论述移动的力量 它是一股无法阻挡的浪潮 将引发颠覆性的革命 随后从电脑逐渐小型化 纸张的消失 娱乐的自由 钱包 社交网络 医疗 教育乃至工农业等方方面面论述移动互
  • 线程池参数

    一 ThreadPoolExecutor核心参数说明 1 corePoolSize 核心线程数 核心线程会一直存活 及时没有任务需要执行 当线程数小于核心线程数时 即使有线程空闲 线程池也会优先创建新线程处理 设置allowCoreThre
  • shell判断一个变量是否为空

    shell判断一个变量是否为空 author 润明 2012 2 1 QQ 226399587 http blog csdn net runming918 判断一个变量是否为空 1 变量通过 引号引起来 如下所示 可以得到结果为 IS NU
  • 数据库管理系统

    1 数据库 DB 指长期保存在计算机的存储设备上 按照一定规则组织起来 可以被各种用户或应用共享的数据集合 2 数据库管理系统 DBMS 指一种操作和管理数据库的大型软件 用于建立 使用和维护数据库 对数据库进行统一的管理和控制 以保证数据
  • 工具使用 [ idea远程服务断点调试 ]

    目录 1 概述 1 1 远程代码调试 1 1 1 idea配置 1 1 2 准备HTTP接口 1 1 3 启动远程服务 1 概述 在开发的过程当中 断点调试是我们比较常用的操作 不管是用来解析代码流程 还是用来排查程序错误 都会去使用到断点
  • 高校俱乐部审核期长安大学星辰同学参观CSDN总部

    7月15日早上北京大雨瓢泼 一大早就接到长安大学星辰同学的消息 要来CSDN与我们交流学习 星辰同学填完加入高校俱乐部申请信息后 我们是通过电话和qq与他联系的 据他所说是他的家人推荐他申请加入CSDN高校俱乐部 并且能够增加经验和锻炼能力
  • echarts饼图,自定义legend,解决legend字数太多和太长的问题,翻页处理

    echarts饼图 自定义legend 解决legend字数太多和太长的问题 翻页处理 https blog csdn net weixin 43899935 article details 107185591 版权 tooltip tri
  • 测试中遇到的问题总结

    一 后端问题 数据库存储相关 1 做更新操作后 发现数据没更新 根因 先读取后更新 解决方案 更新再读取 2 缓存数据未及时更新 导致操作不成功 及时更新缓存数据 正常情况在 一分钟内会将数据库数据同步到缓存 如果用户在一分钟之内同时操作了
  • mmdetection 环境配置mmcv和pytorch对照

    版本一 old mmdetection v1 1 0 python 3 7 9 Driver Version 440 33 01 CUDA Version 10 2 mmcv 0 4 3 mmdet 1 1 0 51df8a9 root d
  • IntelliJ IDEA 详细使用教程 – 主题,字体,类和方法注释设置

    IDEA是Java开发者最喜爱的开发工具之一 高端大气 智能化 个性化 每个开发者都喜欢设置自己喜欢的主题 字体 打造一个属于自己的IDE 本次介绍在IDEA中 如何设置主题 字体等样式 和添加类 方法注释 Windows用户直接点击菜单看
  • python接口自动化测试 ( 第三章)

    如果你不太明白这篇文章是做什么的 点击下方进入介绍篇 点击跳转到介绍篇 你可以知道自己能收获什么 和将要做的功能点和是否值得学习 别再迷茫了 不日进 则日退 学习才是你应该做的事情 进入介绍篇了解你将要走的路 python接口自动化测试 第
  • abapdata定义方法_ABAP中types与data,type与like的区别

    1 types与data区别 types是用来自定义某种类型的 需要data实例化才能使用 data是用来声明基本类型数据对象 也就是实例变量 对于用data直接定义的结构体对象 不参照其它结构类型 参照自定义类型生成新数据语法格式 TYP
  • 快速记忆电阻器色环值

    快速记忆电阻器色环值 觉得有用麻烦点个赞哦 开始正文 最近准备电设 看到电阻器11种色环 实在难记 因此花了我整整5 分钟 想出了一个快速记忆的方法 直接上图 上图是标准色环和阻值对应表 下面是我的简记方法 1 谐音组词记忆yyds 2 简
  • Mysql 主从复制

    简述 start slave show slave status G stop slave reset slave delete relay log create relay log reset master delete bin log
  • langchain包下载安装以及基本使用的注意事项

    当我们使用import langchain导入包是需要先下载langchain这个包 注意事项 我们的python版本必须大于等于3 8 1 否者将会导致 cannot import name RecursiveCharacterTextS
  • python三维点云投影(一)

    本文为博主原创文章 未经博主允许不得转载 本文为专栏 python三维点云从基础到深度学习 系列文章 地址为 https blog csdn net suiyingy article details 124017716 一 立体几何基础知识
  • MySQL的多表查询

    目录 多表关系 一对多 多对多 一对一 多表查询概述 分类 显示内连接 外连接 左外连接 右外连接 自连接 联合查询 子查询 分类 标量子查询 列子查询 行子查询 表子查询 多表关系 项目开发中 在进行数据库表结构设计时 会根据业务需求及业
  • 链表介绍

    链表介绍 链表与顺序表一样 也属于线性表 一个线性表是某类数据元素的一个集合 表里同时记录着元素之间的顺序关系 线性表的数据之间有顺序关系 顺序关系分为两种 一种是物理有序 即数据物理存储的位置顺序与数据之间的顺序关系一致 另一种是逻辑有序