gpt4 book ai didi

python - LinkedList删除功能正在删除2个节点

转载 作者:行者123 更新时间:2023-12-01 00:12:31 25 4
gpt4 key购买 nike

我正在创建自己的 linkedList 实现,并且以某种方式一次删除 2 个节点。我不懂为什么。我尝试过删除不同的整数,似乎真的很想删除列表中的第二个条目。

当我不使用删除方法时,列表会正确遍历。这让我相信我删除错误。我正在使用各种 place_node 跟踪前一个节点。

class LinkedList:
def __init__(self):
self.head = None

def prepend(self,data):
new_node = Node(data)
new_node.next = self.head
self.head = new_node


def traversal(self):
temp = self.head
while temp is not None:
print(temp.data)
temp = temp.next


def append(self,data):
new_node = Node(data)
place_node = None
temp = self.head
while temp is not None:
place_node = temp
temp = temp.next
new_node.next = place_node.next
place_node.next = new_node

def delete(self,data):
new_node = Node(data)
temp = self.head

while temp is not None:

if temp.data == data:
break
place_node = temp
temp = temp.next
place_node.next = temp.next


class Node:
def __init__(self,data):
self.data = data
self.next = None


ehren = LinkedList()

ehren.prepend(5)
ehren.prepend(3)
ehren.prepend(8)
ehren.append(6)
print(" delete the number")
ehren.delete(6)
print("linked list***********")
ehren.traversal()

最佳答案

delete 方法应该像这样实现:

  def delete(self, data):
prev = None
temp = self.head

while temp is not None:
if temp.data == data:
if prev is None: # Handle the case when we are deleting the head which has no previous node
self.head = self.head.next
else:
prev.next = temp.next
break
prev = temp
temp = temp.next

由于这是一个单链表,因此需要跟踪目标之前的节点,删除意味着将前一个节点的 next 指针设置为 待删除节点的next指针,从而使选中的节点消失。

关于python - LinkedList删除功能正在删除2个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59524222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com