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