题目
我的解法
遍历链表时,通过栈,存取每个节点。遍历完后,将栈中的节点一次弹出
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
if not head:
return
stack = []
while head:
stack.append(head)
head = head.next
head = stack.pop()
temp = head
while stack:
next_node = stack.pop()
temp.next = next_node
temp = temp.next
temp.next = None
return head
方法二 指针法
指针pre、cur及保存cur当前位置的指针temp(便于找到正向的下一个元素)
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
if not head:
return
pre = head
cur = None
while pre:
temp = pre# 保存当前pre的值,便于反转后向前走
pre.next = cur
cur = pre# 两个指针分别向前一步
pre = temp.next#
return cur