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

LinkedList delete functionality is deleting 2 nodes

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

当我不使用 delete 方法时,列表会正确遍历。这使我相信我删除不正确。我正在使用 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

由于是单链表,需要跟踪target之前的节点,delete就是把前一个节点的next指针指向next 要删除的节点指针,使选中的节点消失