单链表和双链表

在这里有一个线性表的感念。线性表是N个类型相同数据元素的有限序列,N>0,除第一个元素没有前驱,最后一个元素没有后继之外,其余元素都只有一个前驱和一个后继。线性表一般表示为:(a1,a2,a3,...an)这些数据之间是一对一的关系。

 

线性表的特点:1.表中元素的个数有限,2.表中元素具有逻辑上的顺序性,3.表中元素都是数据元素,每个元素都是单个元素,4.表中元素的数据型都相同,每个元素占有相同大小的存储空间,5.表中元素具有抽象性(仅讨论元素箭的逻辑关系,而不考虑元素究竟表示什么内容)。

线性表的顺序存储结构:

它指的是用一组连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻。第1个元素存储在线性表的起始位置,第i个元素的存储位置后面紧接着存储的是第i+1个元素。比如python内部的tuple和list采用的就是顺序表存储结构

单链表:

单链表是线性表的链式存储。在线性表用连式存储表示时,不需要使用地址连续的存储单元,即它不要求逻辑上相邻的两个元素在物理位置上也相邻。所以在单链表中,存储单元既可以是连续的,也可以是不连续的。

节点包括两个域:数据域用来存储节点的值,指针域用来存储数据元素的直接后继地址(或位置)。

通常用头指针来表示一个单链表,头指针为NULL时表示一个空表。为操作方便,在单链表第一个节点之前附加一个节点,称为头结点,头结点的指针域只想线性表的第一个元素节点。

双链表:

由这个名字就可以得知,双链表即为有两个指针的链表,两个指针为prior何next分别指向前驱节点和后继节点。

 双链表在单链表的节点中增加了一个之指向前驱的prior指针,在双链表中执行查找和按位置查找的操作与在单链表中相同;但是在插入和删除上有所不同,其时间复杂度为O(1)。

循坏链表:分为循环单链表和循环 双链表

循坏单链表:与单链表的区别在于表中的最后一个节点指针不是NULL,而改为指向头结点,从而整个链表形成一个环。

在循坏单链表中,表尾节点*r的指针域指向L,因此表中没有指针域为NULL的节点。在单链表中只能从表头节点开始遍历整个链表,而在循环单链表中,可以从表的任意一个节点开始遍历整个链表。

循环双链表:

与循环单链表类似,不过在循环双链表中,头结点的prior指针还要指向表尾节点。

 在循环双链表L中,如果*p是尾结点,那么p的指针指向L;当双循环列表为空表时,那么头结点的prior域和next域都等于L。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值