要刪除一個節點,需要找到該節點的前一個節點,然后將它的next指針指向要刪除節點的下一個節點。
以下是一個示例代碼,演示如何刪除單鏈表中的節點:
# 定義節點類
class ListNode:
def __init__(self, data):
self.data = data
self.next = None
# 定義單鏈表類
class LinkedList:
def __init__(self):
self.head = None
# 在鏈表尾部插入節點
def append(self, data):
new_node = ListNode(data)
if self.head is None:
self.head = new_node
else:
current = self.head
while current.next:
current = current.next
current.next = new_node
# 刪除指定節點
def delete(self, data):
if self.head is None:
return
# 如果要刪除的節點是頭節點
if self.head.data == data:
self.head = self.head.next
return
current = self.head
while current.next:
if current.next.data == data:
current.next = current.next.next
return
current = current.next
# 打印鏈表
def print_list(self):
current = self.head
while current:
print(current.data, end=" ")
current = current.next
print()
# 創建一個鏈表對象
llist = LinkedList()
# 在鏈表中插入節點
llist.append(1)
llist.append(2)
llist.append(3)
llist.append(4)
llist.append(5)
# 打印原始鏈表
print("原始鏈表:")
llist.print_list()
# 刪除節點 3
llist.delete(3)
# 打印刪除節點后的鏈表
print("刪除節點后的鏈表:")
llist.print_list()
運行上述代碼,輸出結果為:
原始鏈表:
1 2 3 4 5
刪除節點后的鏈表:
1 2 4 5
可以看到,節點3被成功刪除了。