设置好虚拟头节点,想好断开的位置的时候,前后连的节点怎么处理。

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