问题描述:
反转一个单链表。
示例:
输入: 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