设置好虚拟头节点,想好断开的位置的时候,前后连的节点怎么处理。
1 | # Definition for singly-linked list. |
首先先设置好虚拟头节点,想好断开的位置的时候,前后连的节点怎么处理。
保证了前驱→新头这一条边不会断,链表保持连通。
用
temp
保存下一段,避免丢失后续链表。循环条件
while tail and tail.next:
避免空指针错误。每轮交换后把
dummy
、tail
一起前移,循环能正确推进
符号:
dummy
:本轮要交换的两个节点前面的那个节点(前驱)tail
:这一对的第一个节点(旧头)q
:这一对的第二个节点(要换到前面的新头)temp
:下一段链表的起点(可能是下一个 pair 的第一个节点,也可能是 None)