1. 程式人生 > 實用技巧 >單鏈表翻轉

單鏈表翻轉

"""
參考部落格: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.next
def 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)