擅长:python、mysql、java
<p>发布时,代码不会初始化(即未定义<em>self.head</em>)。</p>
<p>但总的来说,你走的是正确的道路。请看<a href="http://hg.python.org/cpython/file/80d7545594ca/Lib/collections.py#l22" rel="nofollow">the source for Python's <em>collections.OrderedDict</em></a>以获得遍历双链表的计算示例。</p>
<p>下面是一个简单的例子:</p>
<pre><code>class Link:
def __init__(self, value, prev=None, next=None):
self.value = value
self.prev = prev
self.next = next
def __iter__(self):
here = self
while here:
yield here.value
here = here.next
def __reversed__(self):
here = self
while here:
yield here.value
here = here.prev
if __name__ == '__main__':
a = Link('raymond')
b = Link('rachel', prev=a); a.next=b
c = Link('matthew', prev=b); b.next=c
print 'Forwards:'
for name in a:
print name
print
print 'Backwards:'
for name in reversed(c):
print name
</code></pre>