链表基础
学习链接
链表的简单定义
链表就是一串通过指针链接起来的线性数据结构,每个元素分为value和指向前后的指针
单链表:
双链表:
链表的操作
- 新建节点
class ListNode { val; next = null; constructor(value) { this.val = value; this.next = null; } }
- 删除节点
直接将当前节点的next指向下下个节点即可实现
- 添加节点
当前节点指向新节点,新节点指向下一个节点
性能分析
链表总结
常用方法
- 虚拟头结点
解决删除问题,给头结点一个前置节点
- 翻转链表
设置cur、prev、temp,一直修改指针指向
- 双指针法
- 解决删除倒数第N个节点问题(fast先走N步)
- 解决链表相交的问题,保持长度相同(长的先走)
- 解决环形链表的问题(slow每次走一步,fast走两步,必在环里相交)