ich diese Schule Zuordnung bekam, hier ist mein Code:Manchmal wird keine gedruckt - und manchmal nicht, warum nicht?
class Doubly_linked_node():
def __init__(self, val):
self.value = val
self.next = None
self.prev = None
def __repr__(self):
return str(self.value)
class Deque():
def __init__(self):
self.header = Doubly_linked_node(None)
self.tailer = self.header
self.length = 0
def __repr__(self):
string = str(self.header.value)
index = self.header
while not (index.next is None):
string+=" " + str(index.next.value)
index = index.next
return string
def head_insert(self, item):
new = Doubly_linked_node(item)
new.next=self.header
self.header.prev=new
self.header=new
self.length+=1
if self.tailer.value==None:
self.tailer = self.header
def tail_insert(self, item):
new = Doubly_linked_node(item)
new.prev=self.tailer
self.tailer.next=new
self.tailer=new
self.length+=1
if self.header.value==None:
self.header = self.tailer
es baut einen Stapel, so dass Sie Elemente aus dem Kopf oder Schwanz hinzuzufügen und zu entfernen (ich schließe nicht den gesamten Code nur die wichtigen Sachen).
Wenn ich ein Objekt einleiten, wenn ich self.next
zurückkehren druckt None
, aber wenn ich self.prev
zurückkehren, druckt es nichts, nur überspringt, ich verstehe nicht, warum, weil sie genau beide gleich definiert sind, wie Sie sehen, und wenn ich einfügen Kopf nur mehrmals zum Beispiel for i in range(1,5): D.head_insert(i)
und dann drucke ich D
es druckt 5 4 3 2 1 None
aber wenn ich Schwanz tue Einsatz zum Beispiel for i in range(1,5): D.tail_insert(i)
und Druck D
druckt 1 2 3 4 5"
, wie es sollte, ohne die None
. Warum das?
Ich habe ein Bild enthalten:
als Faustregel verwenden „ist keine“ statt == None: http://stackoverflow.com/questions/3257919/is-none-vs-none – danielfranca
Bitte siehe http://stackoverflow.com/help/mcve - Fragen zum Code sollten die kleinstmögliche Menge an Code enthalten, die zur Reproduktion des gleichen Problems benötigt werden. –
Es gibt keine "Kopf" und "Schwanz" Methode in der "Deque" Klasse –