我得到這個作業,這裏是我的代碼:有時沒有打印 - 有時不打印,不能得到原因?
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)
,然後我打印D
它打印5 4 3 2 1 None
但如果我做尾巴插入例如for i in range(1,5): D.tail_insert(i)
和打印D
它打印1 2 3 4 5"
,因爲它應該沒有None
。這是爲什麼?
我已經包含的圖像:
作爲一個經驗法則,用「是無」,而不是==無:http://stackoverflow.com/questions/3257919/is-none-vs-none – danielfranca
請請參閱http://stackoverflow.com/help/mcve-有關代碼的問題應包含儘可能少的代碼以重現相同的問題。 –
「Deque」類中沒有'head'和'tail'方法 –