反转链表(python3)

问题描述:

    反转一个单链表。

      示例:

        输入: 1->2->3->4->5->NULL
        输出: 5->4->3->2->1->NULL
解法1:
  单链表的逆置显然很容易联想到头插法,但是头插法都是有头结点,所以需要申明一个头结点作为辅助,返回时返回头节点后的一个节点(即为头指针)
# 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
        h = ListNode(0)#建立头结点
        while p:
            q = p.next
            p.next = h.next
            h.next = p
            p = q
        return h.next 

解法2:
#别人大神的代码,简洁明了
class Solution:
    def reverseList(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        p, rev = head, None
        while p:
            rev, rev.next, p = p, rev, p.next
        return rev

猜你喜欢

转载自www.cnblogs.com/yejiang/p/10298274.html