链表

链表

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

链表

添加操作

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

链表

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

链表

将节点 prev 段链接到 cur

链表

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

删除操作

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

链表

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

链表

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

参考

[1] LeetCode
[2] Code