如何在双链接pythonlis中实现pop函数

2024-04-20 11:45:17 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我正在编写的代码块,它是为学校准备的,所以我不想问答案只是一些指导。我已经花了很长一段时间了,也许我只是累了。有人能给我解释一下我的错误吗?在

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

Tags: the答案代码selfdef错误elementpop
1条回答
网友
1楼 · 发布于 2024-04-20 11:45:17

我认为你的错误都在这些方面:

for _ in range(self[-1]):
    n = n.next
return n

您用于range调用的界限很奇怪。您可能希望迭代nidx次,而不是self[-1]是什么。在

在这一点上,您可能不想return,因为return会停止函数的其余部分的运行。尝试将return行移到取消链接代码的下方。在

您还需要决定是否应该返回一个节点(如果不重置n.nextn.prior),或者该节点中包含的值,那么该节点将具有杂散链接。通常,链表的节点是实现细节,不会暴露给外部代码,因此您将返回值。在

相关问题 更多 >