链表
单向或者双向链表
带头(哨兵位)或者不带头
循环和非循环
无头+单向+非循环链表增删查改实现
动态申请一个节点
单链表的打印
链表的尾删和头删
链表的尾插和头插
链表元素的查找
删除pos位置和pos的后一个位置
在pos之前插入x和pos之后插入x
链表的OJ练习
203. 移除链表元素 - 力扣(LeetCode)
206. 反转链表 - 力扣(LeetCode)
876. 链表的中间结点 - 力扣(LeetCode)
链表中倒数第k个结点:
21. 合并两个有序链表 - 力扣(LeetCode)
CM11 链
表分割:
OR36 链表的回文结构:
160. 相交链表 - 力扣(LeetCode)
141. 环形链表 - 力扣(LeetCode)
142. 环形链表 II - 力扣(LeetCode)
138. 随机链表的复制 - 力扣(LeetCode)
力扣
牛客网在线编程_算法篇_面试必刷TOP101
删除链表节点和尾插,头删的应用
尾插应用,三指针应用
双指针应用,链表找尾应用
双指针应用,链表找尾应用
链表尾插应用
双指针应用
双指针应用(快慢指针)
链表(双向)优势:
1.任意位置插入删除都是 O(1)
2.按需申请释放,合理利用空间,不存在浪费
问题:
1.下标随机访问不方便 O(N)
顺序表问题:
1.头部或者中间插入删除效率低,要挪动数据,O(N)
2.空间不够需要扩容,扩容有一定消耗,且可能存在一定的空间消耗
3.只适合尾插尾删
优势:支持下标随机访问 O(1)
头插头删方便,尾插尾删不方便
我们在写OJ题练习的时候给的链表基本都不会带哨兵位
但是我们在自己创建链表来做题时可以加上带哨兵位的链表
这样做有什么好处呢?
方便我们不用多判断链表为空的代码情况,减少了代码出错情况
哨兵位应用
追及问题分析和双指针
反转链表+找中间节点应用