[读书笔记]-大话数据结构-3-线性表(三)-静态链表、循环链表和双向链表
2017-11-13 19:46
513 查看
静态链表
对于没有指针的编程语言,可以用数组替代指针,来描述链表。让数组的每个元素由data和cur两部分组成,其中cur相当于链表的next指针,这种用数组描述的链表叫做静态链表,这种描述方法叫做游标实现法。我们对数组的第一个和最后一个元素做特殊处理,不存数据。让数组的第一个元素cur存放第一个备用元素(未被占用的元素)下标,而数组的最后一个元素cur存放第一个有值的元素下标,相当于头结点作用。空的静态链表如下图当存放入一些数据时("甲""乙""丁""戊""己""庚"),静态链表为:
静态链表的插入操作
在静态链表第三个位置插入"丙"后,结果如下:
静态链表的删除操作
删除"甲"后,静态链表如下:
循环链表
将单链表中终端节点的指针改为指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表称为单循环链表,简称循环链表。带头节点的空循环链表(左)和带头结点的非空循环链表(右)
循环链表判断结束的条件为:节点是否指向链表的头节点。循环列表访问第一个元素的复杂度为O(1),但访问最后一个元素的复杂度为O(n)。为了方便最后一个元素的访问,经常使用尾指针指向循环链表的最后一个元素。如下图
这样,最后一个节点即rear.next,第一个节点为rear.next.next。
双向链表
双向链表(double linked list)是在单链表的每个节点中,再设置一个指向其前驱节点的指针域。所以,双向链表中都有2个指针,一个指向其直接前驱,另一个指向直接后继。双向循环链表,与循环链表类似,带头结点的双向循环空链表如下图(左),非空如下图(右边)
双向链表的插入操作如下图
双向链表的删除操作如下图
相关文章推荐
- 数据结构——线性表 (顺序表、单链表、静态链表、循环链表、双向链表)
- 详述线性表(单链表,双链表,静态链表和循环链表)
- 《大话数据结构》读书笔记之线性表抽象数据类型(双向循环链表实现)
- 线性表实现:顺序表、链表、循环链表、双向循环链表
- 线性表——循环链表和双向链表
- 数据结构——链表(单链表、循环链表、双向链表、静态链表)
- 有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除
- 数据结构编程笔记六:第二章 线性表 双向循环链表的实现
- 用内核链表提供的双向循环链表标准实现功能
- 循环链表与双向链表
- 数据结构之静态链表和双向循环链表
- C语言线性表之双向循环链表
- 大话数据结构(二)——线性表链式存储结构(单链表)的java实现
- 数据结构(四)——循环链表与双向链表
- 数据结构(十)循环链表和双向链表
- 《大话数据结构》读书笔记之线性表基本操作(静态单链表实现)
- 数据结构----线性表----双向链表
- 循环链表与双向链表
- 【数据结构】C语言实现双向链表(带头尾指针,非循环链表)
- 今天主要学习的是 链表,单链,循环链表和双向链表,总体感觉还可以,还是有点懵懵的,需要勤加练习。