题目内容
输入一个链表,反转链表后,输出新链表的表头。
题目思路
这道题目要翻转链表,也就是说需要一个右侧节点来记录当前节点在当前链表中下一个节点的位置,也需要一个左节点来记录前一个节点的位置,用来创建新链表中下一个节点的位置。
值得注意的是,在搜寻到最后一个节点时,虽然下一个元素为空,但是必须走完这轮保证最后一个节点能够连接的上前一个节点。
同时在开头虽然我们设置了left节点的数值为None,但是这个left节点并不是None,所以还要加一个判定来判断时候为空。
程序代码
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
# write code here
if not pHead or not pHead.next:
return pHead
p=pHead
left=ListNode(None)
while p:
right=p.next
if right==None:
res=p
p.next=left
if not p.next.val:
p.next=None
left=p
p=right
return res