链表题目总结
链表基本操作
对链表进行增删改查等基本操作。注意,很多链表的题目使用虚拟头结点操作起来会更加方便。
反转链表
可以使用头插法,也可以直接修改节点的指向(这种思想有两种实现方法,迭代和递归)
删除倒数第n个节点
采用虚拟头结点和双指针的思想,可以一次遍历就找到要删除的节点。
链表相交
思想就是先判断是否相交,相交的话先遍历长的链表,等两个链表长度相同的时候再同时遍历,就可以找到相交节点。
环形链表
定义快慢指针,慢指针每次走一步,快指针每次比慢指针多走一步。首先判断是否有环,如果有环的话,快指针一定先进环,慢指针进环后第一圈快慢指针一定相遇,没有环的话返回null。如果相遇,再定义两个指针一个从相遇的节点开始,一个从第一个节点开始,每次走一步,两个指针再次相遇的时候就是入环节点。