gpt4 book ai didi

python - Python 中的双向链表

转载 作者:太空宇宙 更新时间:2023-11-03 11:15:30 24 4
gpt4 key购买 nike

结果是一个错误,因为超过了时间限制,但我已经提出了 StopIteration...

我认为我的迭代部分做错了,但很难找到错误。测试输出一直在运行,甚至打印出 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

这些是我用来运行程序的输入:

my_list = LinkedListDLL()
my_list.add_to_head(1)
print("Contents:", end=" ")
for node in my_list:
print(node, end=" ")
print()

最佳答案

此代码旨在在到达列表头部时停止迭代。

    if self.__current == None:
raise StopIteration

但是,您使用一个不同于NoneNodeDLL 对象来表示头部。

您可以保留对头部的引用并检查它:

class LinkedListIterator:
def __init__(self, head):
self._head = head
self._current = head.get_next()

def __iter__(self):
return self

def __next__(self):
if self._current is self._head:
raise StopIteration
else:
item = self._current.get_data()
self._current = self._current.get_next()
return item

关于python - Python 中的双向链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52510003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com