1. 使用 dummy node:
dummy node 就是在链表的 head 前加一个节点指向 head,即 dummy->head,可以 理解成一个虚拟节点。有了 dummy node 就使得操作 head 节点与操作其他节点没有区别。特别适合用在链表 的 head 发生变化的情况下,譬如删除或者被修改等。
dummy = ListNode(0)
dummy.next = head
2. 双指针法:
对于寻找链表的某个特定位置,或者判断 是否有环等问题时,可以用两个指针变量 fast 和 slow, 两个指针以不同的策略移动,直到两个指针的值相等(或 其他特殊条件)为止。
slow = head
fast = head
3. 交换节点的处理:
如果需要交换两个节点的位置,对于这两个前驱节点,他们的next指针会受到影响,这两个节点本身也会受到影响,可以用以下步骤:
先交换两个前驱节点的next指针的值
再交换这两个节点的 next 指针的值