线性表的链式表示——双链表
定义
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表(解决了单链表只能从头结点依次访问顺序向后遍历的问题)
双链表中结点的类型表述如下:
typedef struct DNode{ //定义双链表结点类型EleType data; //数据域struct DNode *prior,*next; //前驱和后继指针
}DNode,*DLlinklist;
双链表的逻辑结构图:
双链表上基本操作
1、插入操作
在双链表中p所指结点之前插入结点*s,其指针变化如下图:
插入操作的代码片段如下:
s->next = p->next; //将结点*s插入到结点*p之后
p->next->prior = s;
s->prior = p;
p->next = s;
【注】上述代码的语句顺序不唯一,但也不是任意的;如第一,二句必须在第四句之前。
2、删除操作
删除双链表中结点*p,其指针的变化过程如下图:
删除操作的片段代码如下:
p->next = q;
q->next =->prior = p;
free(q); //释放结点空间
【注】a为p结点,b为q结点
线性表的链式表示——双链表相关推荐
- 【数据结构】线性表的链式存储-双链表
引言 单链表结点中只有一个指向其后继的指针,这使得单链表只能从头结点依次顺序地向后遍历.若要访问某个结点的前驱结点(插入.删除操作时),只能从头开始遍历 ,访问后继结点的时间复杂度为 0(1),访问前 ...
- 线性表的链式表示——单链表
单链表 定义 线性表的链式存储又称单链表,它是指通过一组任意的存储单元来存储线性表中的数据元素.每个链表的结点,除存放元素自身的信息之外,还需要存放一个指向其后继结点的指针.即单链表的结构分为两部分, ...
- 【数据结构】线性表的链式存储-单链表
单链表的定义 线性表的链式存储又称为单链表,它是指通过一组任意的存储单元来存储线性表中的数据元素. 为了建立起数据元素之间的线性关系,对每个链表结点,除了存放元素自身的信息之外,还需要存放一个指向其后 ...
- 数据结构与算法笔记(三) 线性表(链式描述) 链表
在链式描述中,线性表元素的位置在内存中是随机的,每个元素都有一个明确的指针指向线性表的下一个元素的位置. 1.单向链表: 数据对象的每一个元素都用一个单元或者节点来描述,每个节点都明确包含另一个相关节 ...
- 线性表的链式实现(单链表)
单链表的定义 为了表示每个数据元素与其直接后续元素之间的逻辑关系,每个元素除了存储本身的信息外,还需要存储指示其直接后续的信息,即每个结点存放本身的数据元素和下一个元素的地址.n个结点连接成一个链式线 ...
- 用Java描述数据结构之线性表的链式存储(链表),模拟LinkedList实现
上一篇介绍了顺序表:用Java描述数据结构之线性表的顺序存储(顺序表),ArrayList及其方法的介绍 上一篇博客中说明了什么是线性表--线性表就是一个个数据元素逻辑上以一对一的相邻关系(但是在物理 ...
- 线性表的链式存储-单链表
单链表操作 [x] 单链表的创建(尾插法.头插法) [x] 单链表的查找操作 [x] 单链表的删除操作 [x] 单链表的逆置操作(使用头插法) [x] 单链表表长的计算 [x] 打印单链表 单链表的创 ...
- 什么是线性表?什么是线性表的顺序存储结构?什么是线性表的链式存储结构?
1.线性表是最简单也是最常用的一种数据结构.线性表的例子不胜枚举,例如,英文字母表就是一个线性表,表中的英文字母是一个数据元素. 2.线性表的定义:线性表是具有相同特性的数据元素的一个有限序列. 3. ...
- 数据结构(四) -- C语言版 -- 线性表的链式存储 - 循环链表
文章目录 零.读前说明 一.循环链表的概述 二.循环链表的模型 2.1.包含头节点模型 2.2.不包含头节点模型 三.工程结构及简单测试案例 3.1.测试工程的目录结构 3.2.循环链表示例源码 3. ...
最新文章
- jquery $.each()函数编程实例五则图解
- 2.3.11 管程
- C语言函数参数既做出参又做入参的代表
- java 批量验证_正则表达式批量验证函数
- python 计算小于某个数_python 列表寻找满足某个条件的开始索引和结束索引、区间范围...
- threadgroup_Java ThreadGroup类的checkAccess()方法和示例
- android 双系统 一加5,[一加2][双ROM]一加手机2安装双系统教程
- Python结合selenium自动领取无忧币的脚本
- 【Spark】SparkSQL练习--出租车数据清洗
- Interfaces for Music音乐界面——翻译
- SQL SERVER中WITH TIES的用法
- 美团笔试(测试开发)
- MOS管推挽电路设计及特性解析
- 魔兽名字显示服务器,魔兽世界怀旧服服务器名称
- imchat视频聊天室 linux,基于Nuxt+Vant聊天模板|nuxt.js仿微信界面|红包|朋友圈
- 斯嘉丽约翰逊60张pdf什么时间的?_什么叫美丽与演技并存?
- 挑出区域内每一行最小值,并标记颜色
- 英语不好,能学好计算机吗?
- 点云学习笔记19——使用pcl将bin文件转化为pcd文件
- MyBatis官方文档-XML 映射文件
热门文章
- 浅谈Laravel中的设计模式(四) Contract 契约模式
- 充分的总结分析系统,来调整CMDB及流程。
- C++用数组和链表分别实现Stack
- 也许开发需要的只是一份简单明了的表格
- GPIO 输入—按键检测
- Could not initialize class sun.awt.X11GraphicsEnvironment
- /proc/mtd 各参数的含义 -- linux内核
- Linq之Expression高级篇(常用表达式类型)
- 手杀***病毒Trojan.Win32.Generic.11EBD5EC
- ESFramework网络通信框架介绍之(2)――网络通信消息NetMessage