题目描述
输入一个链表,反转链表后,输出链表的所有元素。
解:
先定义一个last指针,用来指向pHead指针的下一个结点
然后x0结点应该指向None,也就是pHead.next=last,它会成为我们反转之后的最后一个结点,让last指向x0:last=pHead,pHead = pHead.next,这样才完整的将x0给分离出来了
然后再相同的步骤,让pHead往后移,然后依次将x1、x2…..移到x0全面,从而完成链表的反转:
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
if pHead == None or pHead.next == None:
return pHead
last = None
while pHead != None:
tmp = pHead.next #将pHead的next保存下来
pHead.next = last #pHead指向last,这一步其实是反转链接的过程
last = pHead #上一步链接上以后,重新让last指向此时的pHead
pHead = tmp #上面last已经代替了pHead,此时pHead就可以脱离反转表继续去原链接进行新一轮为拆分链接的搬运了
return last