206. 反转链表

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

你可能感兴趣的:(206. 反转链表)