题目描述:
输入一个链表,反转链表后,输出新链表的表头。
思路:
-
辅助list法: 一种最为简单直接的方法,首先遍历链表获取结点的val列表,然后将val列表反转,最后使用反转后的新val列表构建新的链表,返回新链表表头即可
-
反转元素法: 遍历链表并将遍历到的元素作为新链表的头结点,直到最后一个结点
AC代码
辅助list法
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def ReverseList(self, pHead):
# write code here
if pHead == None or pHead.next == None:
return pHead
number = []
while pHead:
number.append(pHead.val)
pHead = pHead.next
number.reverse()
newHead = ListNode(-1)
cur = newHead
for n in number:
node = ListNode(n)
cur.next = node
cur = cur.next
return newHead.next
反转元素法
# -*- 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: return None
newHead = None
while pHead.next:
node = ListNode(pHead.val)
node.next = newHead
newHead = node
pHead = pHead.next
node = ListNode(pHead.val)
node.next = newHead
newHead = node
return newHead