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
要删除的节点指针,使选中的节点消失
我正在创建自己的 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
要删除的节点指针,使选中的节点消失