2016-11-22 55 views
0

此代碼應該排序通過6個元素的列表,忽略第一個。出於某種原因,我總是得到一個錯誤,指出「TypeError:'NoneType'對象不是可以下載的」。如果任何人都可以給我一個解決方案或解釋我的修復,將不勝感激。鏈接列表排序錯誤

def bubbleSortLinkedList(aLinkedList): 
    pointer = aLinkedList 
    swapped = True 
    while swapped: 
     pointer = aLinkedList['next'] 
     swapped = False 
     for i in range(4): 
      if pointer['data'] > pointer['next']['data']: 
       pointer['data'], pointer['next']['data'] = pointer['next']['data'], pointer['data'] 
       swapped = True 
      pointer = pointer['next'] 
     aLinkedList = pointer 
    return aLinkedList 
+0

同時請註明您的列表 –

+0

的內容我敢打賭,錯誤是在這一行:'如果指針[「數據」]>指針[「未來」] [ '數據']:'。如果任何元素的「next」屬性指向「None」,那麼就是你的問題。 – lucasnadalutti

回答

0

在while循環的最後一行中,您寫了aLinkedList = pointer,它將列表指向最後一個元素。但是,您打算做的是將指針設置爲列表的第一個元素。

這是糾正代碼:

def bubbleSortLinkedList(aLinkedList): 
    pointer = aLinkedList 
    swapped = True 
    while swapped: 
     pointer = aLinkedList['next'] 
     swapped = False 
     for i in range(4): 
      if pointer['data'] > pointer['next']['data']: 
       pointer['data'], pointer['next']['data'] = pointer['next']['data'], pointer['data'] 
       swapped = True 
      pointer = pointer['next'] 

     pointer = aLinkedList # This line was wrong!!!!! 

    return aLinkedList