在python中从链表中删除元素

在python中从链表中删除元素,python,list,Python,List,我想知道你们中是否有人能给我介绍一下如何在python中从链表中删除元素,我不是要代码,而是要一种英文的伪算法。例如,我有一个 1->2->2->3->4,我想删除其中一个2的,我该怎么做?我考虑遍历链表,检查其中一个节点的数据是否等于它后面的节点的数据,如果是,则删除它。但我在拆卸零件时遇到了麻烦。谢谢 不需要“删除”节点,只需“跳过”即可。也就是说,将节点1的下一个成员更改为第二个节点2 如果您想要特定的代码示例(这是本网站的标准),请编辑您的问题。您可以执行以下操作: 如果element.

我想知道你们中是否有人能给我介绍一下如何在python中从链表中删除元素,我不是要代码,而是要一种英文的伪算法。例如,我有一个 1->2->2->3->4,我想删除其中一个2的,我该怎么做?我考虑遍历链表,检查其中一个节点的数据是否等于它后面的节点的数据,如果是,则删除它。但我在拆卸零件时遇到了麻烦。谢谢

不需要“删除”节点,只需“跳过”即可。也就是说,将节点1的下一个成员更改为第二个节点2


如果您想要特定的代码示例(这是本网站的标准),请编辑您的问题。

您可以执行以下操作:

如果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']。这在很大程度上取决于它是如何实现的。每当我尝试它时,它似乎会删除所有内容,直到链表的最后一个元素。。。奇怪的