我想知道你是否有人可以让我介绍一下如何从python中的链表中删除一个元素,我不是要求代码,而只是一种英文的伪算法。例如,我有链表 1 - > 2 - > 2 - > 3 - > 4我想删除2中的一个我将如何做到这一点?我想到遍历链表,检查其中一个节点的数据是否等于后面节点的数据,如果它是删除它。但我在删除部分时遇到了麻烦。谢谢!
答案 0 :(得分:1)
您需要维护两个指针
以下是在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
答案 1 :(得分:0)
您不需要“删除”节点,只需“跳过”它。也就是说,将Node1的 next 成员更改为第二个Node2。
如果您想要特定的代码示例(这是此网站的标准),请编辑您的问题。
答案 2 :(得分:0)
You can do something like:
if element.next.value == element.value:
element.next = element.next.next
Just be carefull to free the memory if you are programing this in C/C++ or other language that does not have GC
答案 3 :(得分:0)
Instead of deleting the element, all you need to do is change the pointer
. For example, you want the previous element of the node you want to delete to point to the element after the element you want to delete:
node
is what you want to delete
node.parent.next = node.next
答案 4 :(得分:0)
如果您想在两端实现带有快速追加和弹出操作的类似列表的容器,我强烈建议从容器库https://docs.python.org/2/library/collections.html
中使用deque模块。