Python 利用__iter__和__next__构造可迭代的链表:
具体代码如下:
class LinkList(object):
class Node:
def __init__(self, item = None):
self.item = item
self.next = None
def __init__(self):
self.head = None
self.tail = None
def push(self, element):
s = LinkList.Node(element)
if not self.head:
self.head = s
self.tail = s
else:
self.tail.next = s
self.tail = s
def __iter__(self):
return self
def __next__(self):
if self.head:
s = self.head
self.head = s.next
return s.item
else:
raise StopIteration
返回结果:
lk = LinkList()
lk.push(2)
lk.push(3)
lk.push(5)
lk.push(7)
for i in lk:
print(i)
2
3
5
7
注释:
1)__iter__方法:告诉系统这是一个可迭代对象,返回链表本身。
2)__next__方法,系统对可迭代类自动调用其__next__方法。