單鏈表翻轉
阿新 • • 發佈:2020-10-25
""" 參考部落格:https://www.cnblogs.com/byrhuangqiang/p/4311336.html """ class ListNode: def __init__(self, x): self.val = x self.next = None def reverseList(head): """原地翻轉 1->2->3->4->5 -1->2->1->3->4->5 -1->3->2->1->4->5 -1->4->3->2->1->5 -1->5->4->3->2->1""" if head == None: return head dummy = ListNode(-1) dummy.next = head prev = dummy.next pCur = prev.next while (pCur != None): prev.next = pCur.next pCur.next = dummy.next#即prev dummy.next = pCur pCur = prev.next return dummy.nextdef reverseList2(head): """新建連結串列翻轉 1->2->3->4->5 -1->1->null -1->2->1->null -1->3->2->1->null -1->4->3->2->1->null -1->5->4->3->2->1->null """ dummy = ListNode(-1) pCur = head while(pCur!= None): pNext= pCur.next pCur.next = dummy.next dummy.next = pCur pCur = pNext return dummy.next if __name__ == "__main__": head = ListNode(1) next_2 = ListNode(2) next_3 = ListNode(3) next_4 = ListNode(4) next_5 = ListNode(5) head.next = next_2 next_2.next = next_3 next_3.next = next_4 next_4.next = next_5 reversed_list = reverseList2(head)