Iこの学校の割り当てを得た、ここに私のコードは次のとおりです。時には何も印刷されません - 時々そうではありませんが、なぜ取得できませんか?
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
それはあなたが頭や尾から項目を追加および削除することができ、スタックを構築します(私は唯一の重要なもののすべてのコードが含まれていませんでした)。
私はself.next
それがNone
印刷しますが、私はself.prev
を返す場合、それは、何も印刷していない、彼らは両方のあなたが見るとまったく同じに定義されているので、私は理由を理解していない、スキップ、およびを返す場合、私は、オブジェクトを開始
for i in range(1,5): D.head_insert(i)
のように数回だけ挿入して
5 4 3 2 1 None
を印刷した場合、
for i in range(1,5): D.tail_insert(i)
のように末尾に挿入して
D
を印刷すると、
None
を付けないと、
1 2 3 4 5"
が印刷されます。何故ですか?
私がイメージ含まれている:あなたは空ではないDeque
を作成することに注意してください
代わりに==なしの「Noneです」、::http://stackoverflow.com/questions/3257919/is-none-vs-none – danielfranca
してくださいここでは全体の変化でありますhttp://stackoverflow.com/help/mcveを参照してください。 - 同じ問題を再現するのに必要な最小限のコードをコードに含める必要があります。 –
'Deque'クラスには' head'メソッドと 'tail'メソッドはありません –