非递归实现:使用栈
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def reverseList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
stack=[]
while head!=None:
stack.append(head)
head=head.next
if len(stack)==0:
return head
head=node=stack.pop()
while len(stack)>0:
node.next=stack.pop()
node=node.next
node.next=None
return head
递归实现:
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def reverseList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
def reverse(node,pre):
head=pre
if node!=None:
head=reverse(node.next,node)
node.next=pre
return head
return reverse(head,None)
递归方法参考了评论。