206. Reverse Linked List

Reverse a singly linked list.

Example:

Input: 1->2->3->4->5->NULL
Output: 5->4->3->2->1->NULL

Follow up:

A linked list can be reversed either iteratively or recursively. Could you implement both?

Solution1:

# Definition for singly-linked list.
class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

class Solution:
    def reverseList(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        start = None
        while head:
            temp = head
            head = head.next
            temp.next = start
            start = temp
        return start

Solution2:

# Definition for singly-linked list.
class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

class Solution:
    def reverseList(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        p = head
        num = []
        while p:
            num.append(p.val)
            p = p.next
        p = head
        print(num)
        while len(num):
            p.val = num.pop()
            p = p.next
        return head

或许第二种方法更好写?

posted @ 2018-11-30 15:18  bernieloveslife  阅读(62)  评论(0编辑  收藏  举报