题目
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
来源:力扣(LeetCode) 链接:LeetCode206. 反转链表 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解法一 (迭代法)
思路 如题代码
class Solution(object):
def reverseList(self
, head
):
"""
:type head: ListNode
:rtype: ListNode
"""
if not head
:
return head
end
=ListNode
(head
.val
)
head
=head
.next
while head
:
node
=ListNode
(head
.val
)
node
.next=end
head
=head
.next
end
=node
return end
结果
解法二(递归法)
思路 如题代码
class Solution(object):
def reverseList(self
, head
):
"""
:type head: ListNode
:rtype: ListNode
"""
if not head
or not head
.next:
return head
myhead
= self
.reverseList
(head
.next)
head
.next.next = head
head
.next = None
return myhead
结果