下面是我正在处理的代码块,它是针对学校的,所以我不是要求答案只是一些指导。一直在研究这个问题,也许我只是尝试过。有人可以向我解释我的方式错误吗?
def pop(self, idx=-1):
"""Deletes and returns the element at idx (which is the last element,
by default)."""
nidx = self._normalize_idx(idx)
if nidx >= len(self):
raise IndexError
n = self.head
for _ in range(self[-1]):
n = n.next
return n
n.prior.next = n.next
n.next.prior = n.prior
self.length -= 1
答案 0 :(得分:0)
我认为你的错误都在这些方面:
for _ in range(self[-1]):
n = n.next
return n
您range
电话使用的界限很奇怪。您可能希望迭代nidx
次,而不是self[-1]
。
此时您可能也不想return
,因为return
会阻止其他功能运行。尝试将return
行移至取消链接代码下方。
您还需要决定是否应该返回一个节点(如果您不重置n.next
和n.prior
将会有一个迷路链接)或一个值包含在节点内。通常,链接列表的节点是不会暴露给外部代码的实现细节,因此您将返回该值。