题目:反转链表
输入一个链表,反转链表后,输出新链表的表头。
思路1:
简单粗暴遍历链表,将每一个结点一次入栈,最后依次出栈形成新链表。
代码
# -*- 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 pHead is None or pHead.next is None:
return pHead
res = []
h = pHead
while h:
res.append(h)
h = h.next
new_h = Node = res.pop(-1)
while res != []:
new_h.next = res.pop(-1)
new_h = new_h.next
new_h.next = None
return Node
思路2:遍历的过程中逐步反转,设置指针pre、cur、nxt.
代码
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
# write code here
if pHead is None or pHead.next is None:
return pHead
pre = None
cur = pHead
nxt = pHead.next
while nxt:
cur.next = pre
pre = cur
cur = nxt
if nxt.next is None:
break
nxt = nxt.next
cur.next = pre
return nxt