写在前面
链表转置不算一个很难的任务,但是里面含有的结构不变性(词是自己瞎造的)值得品味一下
思路
对于逆转链表来说,如果逆转了左边的部分,则对于右边的下一次逆转来说只不过是上一次任务的延续。
而对于初始情况而言,就会是下面这种情况。能够想清楚这一点,则编程的思路会十分清晰,具体的:
- 当正序链表不为空时将正序链表的头指向逆序链表的头
- 更新正序链表头和逆序链表头
请好好在脑子里回味下上面的两句话。经过上面的操作则逆序链表头会变成新的逆转过后的头
代码
left= None # 逆序链表的头
while right: # 正序链表不为空
dummy = right.next # 记录下一次正序链表
right.next = left # 正序链表指向逆序链表的头
left = right # 更正逆序链表的头
right= dummy # 更正正序链表的头