在链接列表中删除第一个元素


def remove(self: 'LinkedList') -> None:
    occur = self._last
    if occur!= None:
        occur = self._first
    occur._first = None
>>> lst = LinkedList([1, 2, 1, 3, 2, 1])
>>> lst.remove()
>>> lst == LinkedList([2, 1, 3, 2, 1])

实际结果:true

我的输出:false

im试图从链接列表中删除第一个元素。我不确定我的实施是否正确

如果要 remove 链接列表的第一个元素,这意味着._first应参考 second element从现在开始的列表。

此外,您必须检查._last元素是否是._first元素。如果是这种情况,则必须将._last设置为None,因为在这种情况下,列表仅包含一个元素。

因此,您可以使用:

进行此操作
def remove_head (self: 'LinkedList') -> None:
    # check if the list is not empty
    if self._first is not None:
        # check if first and last refer to the same node
        if self._last is self._first:
            # if so the list contains one node, so set _last to None
            self._last = None
        # update the pointer to the _first element to advance one hop
        self._first = self._first._next

i在这里假设一个节点中对下一个节点的引用称为 _next。但是您可以轻松地改变它。您也最好使用更多描述性名称命名您的功能,例如remove_head

相关内容

  • 没有找到相关文章

最新更新