# 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
"""
if head == None:
return head
p = head
n = head.next
p.next = None
while n:
t = n.next
n.next = p
p = n
n = t
return p
2 設置一箇中間結點,存儲每一步結點的上一個結點地址:
# 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
"""
tmp = ListNode(0)
while head:
n = head.next
head.next = tmp.next
tmp.next = head
head = n
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
"""
return self.reverseNode(head, None)
def reverseNode(self, head, before):
if head == None:
return before
n = head.next
head.next = before
return self.reverseNode(n, head)