数据结构之链表

链表概念:链表是一种在物理上非连续、非顺序的数据结构,由若干节点索组成。
链表中数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列节点(链表中每一个元素称为节点)组成,节点可以在运行时动态生成。每个节点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个节点地址的指针域。双向链表会多一个指向上一个节点的指针域。

链表分类:单向链表、双向链表、循环链表。

单链表
单链表的每一个节点包含两部分,一部分是存放数据的变量data,另一部分是指向下一节点的指针next

双链表
双链表的每一个节点除了拥有data和next指针,还拥有指向前置节点的prev指针。

循环链表
链表的尾节点指向头节点形成一个环,成为循环链表。

链表的存储原理:随机存储。
链表的每一个节点分布在内存的不同位置,依靠next指针关联起来。这样可以灵活有效地利用零散的碎片空间。
链表的第一个节点被称为头节点,没有任何节点的next指针指向它,或者说它的前置节点为空,头节点用来记录链表的基地址。有了它,我们可以遍历得到整条链表。
链表的最后1个节点被称为尾节点,它指向的next为空。

操作
查找:慢,从头部开始遍历查找
更新:慢,因为先要查找再插入
插入:快
删除:快

时间复杂度
查找节点:O(n)
更新节点:O(1),不包含查询时间
插入节点:O(1)
删除节点:O(1)

优点:插入、删除、更新效率高,省空间。
缺点 :查询效率较低,不能随机访问。

应用:链表的应用也非常广泛,比如树、图、Redis的列表、LRE算法实现、消息队列等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二次觉醒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值