So für die Praxis der Datenstruktur in verschiedenen Sprachen, entschied ich mich, eine verknüpfte Liste in Python zu erstellen.Fehler beim Erstellen einer LinkedList
Hier ist mein Code so weit, es noch lange nicht getan ist, aber ich habe diesen Fehler aufgetreten ist, und ich kann nicht scheinen, um mich zu zeigen, wo es herkommt:
class LinkedNode:
def __init__(self, value):
self.value = value
self.nextNode = None
class LinkedList:
def __init__(self):
self.headNode = None
def isEmpty(self):
return self.headNode == None
def addToHead(self, value):
head = LinkedNode(value)
def removeFromHead(self):
head = self.headNode
self.headNode = self.headNode.nextNode
return head
def addToTail(self, value):
if self.headNode == None:
self.addToHead(value)
else:
tmp = self.headNode
while tmp.nextNode != None:
tmp = tmp.nextNode
tmp.nextNode = LinkedNode(value)
def empty(self):
self.headNode = None
def contains(self, value):
tmp = self.headNode
while tmp.nextNode != None:
if tmp.value == value:
return true
tmp = tmp.nextNode
return False
def toString(self):
tmp = self.headNode
buffer = '['
while tmp.nextNode != None:
buffer = buffer + str(tmp.value) + ', '
tmp = tmp.nextNode
buffer = buffer + ']'
list = LinkedList()
list.addToHead(1)
list.addToHead(2)
list.addToTail(3)
list.toString()
Hier wird Der Fehler:
Traceback (most recent call last):
File "path/linkedList.py", line 52, in list.toString()
File "path/linkedList.py", line 44, in toString
while tmp.nextNode != None:
AttributeError: 'NoneType' object has no attribute 'nextNode' [Finished in 0.138s]
Ahh ich sehe, was du mit der 'pythonischen' Art zu tun meinst und auf diese Weise würde ich einfach 'print (repr (list)) machen 'oder' str' wenn ich das auch benutze. Was wäre eine bessere Sache zu tun? Wären die Leute mit einer toString-Repräsentation vertraut, und würden sie gleichzeitig eine pythonische Darstellung verwenden? – madcrazydrumma
Es wird immer empfohlen, keine Code-Duplizierung zu haben (mit '__str __()' und 'toString'). Außerdem müssen Sie nicht einmal 'print (repr (list))' machen. Eine einfache 'print (list)' würde automatisch die '__str __()' Methode aufrufen :) – th3an0maly
Ahh okay das ist gut zu wissen! Ich bleibe dann bei der '__str __()' Methode! – madcrazydrumma