栈
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
#空列表直接返回
if head==None:
return head
#利用栈记录遍历信息
stack = []
node = head
while node.next:
stack.append(node.val)
node = node.next
#将最后一个节点记录为新的head节点
newhead = node
#再次遍历直到栈为空
while stack:
node.next = ListNode(stack.pop())
node = node.next
return newhead
递归
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
#空列表直接返回
if head==None or head.next==None:
return head
p = self.reverseList(head.next)
head.next.next = head
head.next = None
return p
迭代
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
cur = head
pre = None
while cur:
temp = cur.next
cur.next = pre
pre = cur
cur = temp
return pre