如何在双向链接的python列表中实现pop函数

时间:2016-11-04 04:50:34

标签: python-3.x doubly-linked-list pop

下面是我正在处理的代码块,它是针对学校的,所以我不是要求答案只是一些指导。一直在研究这个问题,也许我只是尝试过。有人可以向我解释我的方式错误吗?

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

1 个答案:

答案 0 :(得分:0)

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

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

range电话使用的界限很奇怪。您可能希望迭代nidx次,而不是self[-1]

此时您可能也不想return,因为return会阻止其他功能运行。尝试将return行移至取消链接代码下方。

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