【题目】
反转一个单链表。
【示例】
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
【进阶】
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
【代码】
【Python】
【递归】
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
if not head or not head.next:
return head
cur=self.reverseList(head.next)
head.next.next=head
head.next=None
return cur
【迭代】
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
if not head or not head.next:
return head
pre,cur=head,head.next
while cur:
t=cur.next
cur.next=pre
if pre==head:
pre.next=None
pre=cur
cur=t
return pre