python - 使用队列实现链表:Python
问题描述
我正在尝试使用链表实现队列。它主要工作但是我认为我的is_empty
函数存在问题,因为当我运行代码并尝试在队列中没有任何内容时出队时,它应该说IndexError("Can't dequeue from empty queue.")
但我的测试告诉我它什么也没返回
考试:
Failed example:
result = q.dequeue()
Expected:
Traceback (most recent call last):
...
IndexError: Can't dequeue from empty queue.
Got nothing
dequeue 和 is_empty 函数的代码:
def dequeue(self):
if self.is_empty():
return IndexError("Can't dequeue from empty queue.")
else:
to_return = self.head.item
self.head = self.head.next_node
return to_return
def is_empty(self):
""" returns True if the queue is empty """
return self.head is None
解决方案
如果您希望抛出错误,请使用raise语句而不是return
这是示例代码:
class Queue():
def __init__(self):
self.head = None
def dequeue(self):
if self.is_empty():
raise IndexError("Can't dequeue from empty queue.")
else:
to_return = self.head.item
self.head = self.head.next_node
return to_return
def is_empty(self):
""" returns True if the queue is empty """
return self.head is None
queue = Queue()
item = queue.dequeue()
print(item)
输出:
Traceback (most recent call last):
File "test2.py", line 20, in <module>
item = queue.dequeue()
File "test2.py", line 8, in dequeue
raise IndexError("Can't dequeue from empty queue.")
IndexError: Can't dequeue from empty queue.
推荐阅读
- java - 如何在 Neo4j for java 中传递动态生成的属性名称和值列表?
- javascript - 致命错误:CALL_AND_RETRY_LAST 分配失败 - JavaScript 堆内存不足(反应 npm 测试)
- colors - VS Code intellisense 不显示十六进制值颜色的颜色框
- javascript - 为什么我的 messing.getToken() 在 Firefox 中有效,但在 chrome 中无效?
- extjs - IE 中的 JAWS、ExtJS 6 网格
- r - lapply 跨多个数据帧的函数集
- asp.net - HttpPut 的正确语法
- r - “assign()”和“get()”能写得更简洁吗?
- dart - 在 Dart 中将数字转换为人类可读的格式(例如 1.5k、5m、1b)?
- android - 无法从导航抽屉中调用活动