在python中从链表中删除元素
我想知道你们中是否有人能给我介绍一下如何在python中从链表中删除元素,我不是要代码,而是要一种英文的伪算法。例如,我有一个 1->2->2->3->4,我想删除其中一个2的,我该怎么做?我考虑遍历链表,检查其中一个节点的数据是否等于它后面的节点的数据,如果是,则删除它。但我在拆卸零件时遇到了麻烦。谢谢 不需要“删除”节点,只需“跳过”即可。也就是说,将节点1的下一个成员更改为第二个节点2在python中从链表中删除元素,python,list,Python,List,我想知道你们中是否有人能给我介绍一下如何在python中从链表中删除元素,我不是要代码,而是要一种英文的伪算法。例如,我有一个 1->2->2->3->4,我想删除其中一个2的,我该怎么做?我考虑遍历链表,检查其中一个节点的数据是否等于它后面的节点的数据,如果是,则删除它。但我在拆卸零件时遇到了麻烦。谢谢 不需要“删除”节点,只需“跳过”即可。也就是说,将节点1的下一个成员更改为第二个节点2 如果您想要特定的代码示例(这是本网站的标准),请编辑您的问题。您可以执行以下操作: 如果element.
如果您想要特定的代码示例(这是本网站的标准),请编辑您的问题。您可以执行以下操作:
如果element.next.value==element.value:
element.next=element.next.next
如果您正在用C/C++或其他没有GC的语言编程,请小心释放内存,而不是删除元素,只需更改
指针即可。例如,您希望要删除的节点的上一个元素指向要删除的元素之后的元素:
节点
是您要删除的节点
node.parent.next = node.next
您需要维护两个指针
一个是检查当前节点的数据是否与要删除的值相同
另一个指针是将前一个节点的引用保留到当前节点。这是必需的,因为删除当前节点时,当前节点的下一个节点需要指向当前节点的上一个节点
下面是在python中执行相同操作的代码:
def remove(self, val):
if self.head == val:
self.head = self.head.next
return
tmp = self.head.next
tmp_prev = self.head
while tmp.next is not None:
if tmp.data == val:
tmp_prev.next = tmp.next
tmp = tmp.next
tmp_prev = tmp.next
return
如果您想实现两端都有快速附件和弹出窗口的列表式容器,我强烈建议您使用容器库中的deque模块node.next=node.next.next
,因此很可能是node['next']=node['next']['next']。这在很大程度上取决于它是如何实现的。每当我尝试它时,它似乎会删除所有内容,直到链表的最后一个元素。。。奇怪的