2016-11-22 7 views
0

Dieser Code soll eine Liste von 6 Elementen sortieren, wobei die erste ignoriert wird. Aus irgendeinem Grund bekomme ich immer eine Fehlermeldung "TypeError: 'NoneType' Objekt ist nicht unterscheidbar". Wenn mir jemand eine Lösung anbieten oder mir eine Lösung erklären könnte, wäre das sehr willkommen.Verknüpfte Liste Sortierfehler

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

auch den Inhalt Ihrer Liste –

+0

Bitte erwähnen Sie wette, dass ich die Fehler in dieser Zeile ist: 'Wenn Zeiger [ 'data']> Zeiger [ 'next'] [ "Daten"]: '. Wenn eine der "next" -Eigenschaften der Elemente auf "None" zeigt, liegt Ihr Problem vor. – lucasnadalutti

Antwort

0

In der letzten Zeile der while-Schleife, haben Sie aLinkedList = pointer, geschrieben, die die Liste auf das letzte Element zeigte. Sie beabsichtigten jedoch, den Zeiger auf das erste Element der Liste zu setzen.

Dies ist der korrigierte Code:

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