链表

链表

链表与数组相似,也是一种线性数据结构。链表中的每个结点不仅包含值,还包含链接到下一个结点的引用字段。

Linked-List

添加操作

对链表在给定的结点 prev 之后添加新结点 cur

linked-list-add1

将节点 cur 链接到 prev 的下一个结点 next

linked-list-add2

将节点 prev 段链接到 cur

linked-list-add3

与数组不同,不需要将所有元素移动到插入元素之后。因此,链表可以在 O(1) 时间复杂度中将新结点插入到链表中,非常高效。

删除操作

从单链表中删除现有结点 cur

linked-list-delete1

先找到 cur 的上一个结点 prev 及其下一个结点 next ,接下来链接 prev 到 cur 的下一个节点 next

linked-list-delete2

为找出 prev ,必须从头结点遍历链表,它的平均时间是 O(N),其中 N 是链表的长度。因此,删除指定结点的时间复杂度将是 O(N)。而空间复杂度为 O(1),因为只需要常量空间来存储指针。

参考

[1] LeetCode
[2] Code

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值