Python 删除链表中的第一个元素

Python 删除链表中的第一个元素,python,linked-list,python-3.6,Python,Linked List,Python 3.6,实际结果: 真的 我的输出: 假的 我正在尝试从链表中删除第一个元素。我不确定我的实现是否正确如果您想删除链接列表的第一个元素,这意味着从现在开始\u first应该引用列表中的第二个元素 此外,您必须检查\u last元素是否为\u first元素。如果是这种情况,您还必须将\u last设置为None,因为在这种情况下,列表只包含一个元素 因此,您可以使用: def remove(self: 'LinkedList') -> None: occur = self._last

实际结果: 真的

我的输出: 假的


我正在尝试从链表中删除第一个元素。我不确定我的实现是否正确

如果您想删除链接列表的第一个元素,这意味着从现在开始
\u first
应该引用列表中的第二个元素

此外,您必须检查
\u last
元素是否为
\u first
元素。如果是这种情况,您还必须将
\u last
设置为
None
,因为在这种情况下,列表只包含一个元素

因此,您可以使用:

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])

我在这里假设对节点中下一个节点的引用称为
\u next
。但你可以很容易地改变这一点。你最好用更具描述性的名称来命名你的函数,比如
remove\u head

对不起,你的问题是什么?我更新了我的问题,但你只设置了
occure
的引用,这是一个本地引用。@WillemVanOnsem你怎么办mean@TheGamer:通过设置
发生=self.\u last
,对
的引用所做的更改不会反映到
self.\u last
本身。
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