结果发现是个错误,因为超过了时间限制, 但我已经提出了停止迭代。。。在
我想我的迭代部分做错了什么,但是很难找到错误。测试输出继续运行,甚至打印出None值。这是怎么发生的?在
class LinkedListIterator:
def __init__(self, head):
self.__current = head.get_next()
def __iter__(self):
return self
def __next__(self):
if self.__current == None:
raise StopIteration
else:
item = self.__current.get_data()
self.__current = self.__current.get_next()
return item
这些是我用来运行程序的输入:
^{pr2}$
您要实现的是一个
MutableSequence
的API,它实现了一个双链接列表。在要在Python中做到这一点,您应该依赖于
collections.abc
,它可以指导您完成实现所有必需方法的过程。在例如,链表实际上是从
MutableSequence
继承的类。在在实例化一个有一些尚未编写的抽象方法的类时,您将得到一个
^{pr2}$TypeError
,它将指导您完成需要实现的方法。在特别是,请注意,
list
或链表不是一个迭代器,而是一个iterable。这意味着__iter__
方法不应返回self
,而应依赖于__next__
,而应返回链接列表内容的全新迭代器。在换句话说,您只能通过一个迭代器迭代一次,并且可以多次遍历和iterable。在
全面实施
结果我得到了一个完全的双链表实现方式。你可以看看。在
示例
输出
这段代码是为了在到达列表的头时停止迭代。在
但是,您用一个与
None
不同的NodeDLL
对象来表示头部。在你可以保留对头部的引用并对照它:
^{pr2}$相关问题 更多 >
编程相关推荐