<ol>
<li><p>请记住,您创建的<code>Deque</code>不是空的。您正在用值为<code>None</code></p></li>
<li><p>您正在交换<code>value</code>和Node对象。当你检查<code>if self.tailer.value==None:</code>时,这可能不是你的意思</p></li>
<li><p>第2点之后是对空Deque的特殊处理,其中header和tailer是<code>None</code></p></li>
</ol>
<p>如果我要实现<code>Deque</code>,我的想法是这样的。我稍微改变了<code>__repr__</code>的返回值。你知道吗</p>
<pre><code>class Deque():
def __init__(self):
self.header = None
self.tailer = None
self.length = 0
def __repr__(self):
if self.header is None:
return 'Deque<>'
string = str(self.header.value)
index = self.header.next
while index!=None:
string+=" " + str(index.value)
index = index.next
return 'Deque<'+string+'>'
def head_insert(self, item):
new = Doubly_linked_node(item)
new.next=self.header
if self.length==0:
self.tailer=new
else:
self.header.prev=new
self.header=new
self.length+=1
def tail_insert(self, item):
new = Doubly_linked_node(item)
new.prev=self.tailer
if self.length==0:
self.header=new
else:
self.tailer.next=new
self.tailer=new
self.length+=1
</code></pre>