Python Verkettete Liste Anhängen
Machte ich eine append-Methode für eine UnorderedList() Klasse, funktioniert einwandfrei in meiner IDLE-Fenster, aber wenn das zugewiesen, um die Universität ' s test von:
my_list = UnorderedList()
my_list.append(13)
for num in my_list:
print(num, end=" ")
print()
gibt es einen Fehler: AttributeError: Nonetype object has no attribute 'getNext'
.
Hier ist die append-Methode:
def append(self,item):
current = self.head
while current.getNext() != None:
current = current.getNext()
current.setNext(Node(item))
Hier ist der rest meiner Klassen und code:
class Node:
def __init__(self,initdata):
self.data = initdata
self.next = None
def getData(self):
return self.data
def getNext(self):
return self.next
def setData(self,newdata):
self.data = newdata
def setNext(self,newnext):
self.next = newnext
class UnorderedList:
def __init__(self):
self.head = None
self.count = 0
def append(self,item):
current = self.head
while current.getNext() != None:
current = current.getNext()
current.setNext(Node(item))
Warum ist der test, der Rückkehr, der Fehler und wie kann ich fix meinen append-Methode?
InformationsquelleAutor Newbie | 2015-02-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist hier in der append-Methode:
In der ersten iteration der Wert von
current
istself.head
, dieNone
zunächst, und Sie nicht überprüfen.So anstelle, ändern und einführen, überprüft diese Bedingung ad unten:
PS: Sie sind auch mit einer Variablen
self.count
, die Sie nicht aktualisieren. Vielleicht möchten Sie das update wie gut.es war nicht ein iterierbar in den ersten Platz, die
for
Schleife nicht funktionieren würde in seiner aktuellen form. Sie definieren eine benutzerdefinierte__iter__
Methode, um das zu beheben. Eh, das wäre eine eigene Frage, so können Sie bitten, einen neuen Bezug auf Ihre Umsetzung in etwa gleich.Ok werde ich haben, um zu erforschen, wie das zu tun. Danke
Gerade bearbeitete meinen letzten Kommentar. Auch, wenn das geholfen hat, vergessen Sie nicht akzeptieren und upvote 🙂
Ich habe versucht, eine iter - Methode, aber die while-Schleife noch nicht zu Ende. Keine Hilfe? Ich kann nur eine Frage stellen, die in 90 Minuten.
InformationsquelleAutor mu 無
Hinzufügen wenig mehr ausgearbeitet append-Methoden
Methode zum einfügen am Anfang
Methode zum einfügen am Ende
Methode zum einfügen an der angegebenen position
InformationsquelleAutor Yashwanth Chowdary Kata
Dieser O(n) - Implementierung sollte eine leere Liste zu :
InformationsquelleAutor Dhaval Mohandas
den append-Methode funktioniert gut, aber es durchläuft die Liste, bis er eine findet die Letzte Knoten - das macht O(n). Wenn Sie verfolgen, den letzten Knoten, können Sie anfügen, die ist O(1):
Aktivieren Sie diese Ihrer Liste Konstruktor der Klasse werden sollte:
InformationsquelleAutor mik