题目:输入一个链表,反转链表后,输出新链表的表头。
之前做的时候已经练习过了,这里顺便实现了一种更直接的方法。
方法一:直接创建新的链表。
优点是思路更简单更清晰,缺点是需要额外的控件。
# -*- 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
node_pre = None
node_new = None
while pHead:
node_new = ListNode(pHead.val)
node_new.next = node_pre
node_pre = node_new
pHead = pHead.next
return node_new
方法二:修改链表的每一个结点的指针。
# -*- 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
node_pre = None
current = pHead
node_next = None
while current:
node_next = current.next
current.next = node_pre
node_pre = current
current = node_next
return node_pre