我试图编写一个迭代器,它以相反的方式从链接列表返回数据,从最后一个节点到头节点。
但由于某种原因,我们只返回了第一个值,即第一个递归级别的值。
============= code ===========
class Node:
def __init__(self ,data ,next=None):
self.data = data
self.next = next
def foo(head):
if head.next is None:
yield head.data
else:
foo(head.next)
yield head.data
=============================
head = Node('A',Node("B", Node("C")))
for x in foo(head):
print(x)
========结果==========
甲
========应该是========
一个 乙 ç
答案 0 :(得分:1)
以下方法用于打印转发节点列表和反向节点列表。
Node类:
>>> class Node:
... def __init__(self, data=None, next=None):
... self.data = data
... self.next = next
... def __str__(self):
... return str(self.data)
包含多个节点的列表
>>> node1 = Node('A')
>>> node2 = Node('B')
>>> node3 = Node('C')
链接节点,第一个节点引用第二个节点,第二个节点引用第三个节点,第三个节点引用无
>>> node1.next = node2
>>> node2.next = node3
打印转发列表
>>> def print_list(node):
... while node:
... print(node),
... node = node.next
... print
...
>>> print_list(node1)
A
B
C
打印后退列表
>>> def print_backward(list):
... if list == None: return
... head = list
... tail = list.next
... print_backward(tail)
... print(head),
...
>>> print_backward(node1)
C
B
A
有关详细信息please refer