📌  相关文章
📜  用于删除链表中节点的Python程序

📅  最后修改于: 2022-05-13 01:55:25.508000             🧑  作者: Mango

用于删除链表中节点的Python程序

我们在之前关于单链表的文章中讨论了链表介绍和链表插入。
让我们制定问题陈述以了解删除过程。给定一个“键”,删除链表中该键的第一次出现

迭代方法:
要从链表中删除一个节点,我们需要执行以下步骤。
1)找到要删除的节点的前一个节点。
2)改变前一个节点的下一个。
3) 为要删除的节点释放内存。

链接列表删除

由于链表的每个节点都是使用 C 中的 malloc() 动态分配的,因此我们需要调用 free() 来释放为要删除的节点分配的内存。

Python3
# A complete working Python3 program to
# demonstrate deletion in singly 
# linked list with class 
  
# Node class 
class Node: 
  
    # Constructor to initialize the node object 
    def __init__(self, data): 
        self.data = data 
        self.next = None
  
class LinkedList: 
  
    # Function to initialize head 
    def __init__(self): 
        self.head = None
  
    # Function to insert a new node at the beginning 
    def push(self, new_data): 
        new_node = Node(new_data) 
        new_node.next = self.head 
        self.head = new_node 
  
    # Given a reference to the head of a list and a key, 
    # delete the first occurrence of key in linked list 
    def deleteNode(self, key): 
          
        # Store head node 
        temp = self.head 
  
        # If head node itself holds the key to be deleted 
        if (temp is not None): 
            if (temp.data == key): 
                self.head = temp.next
                temp = None
                return
  
        # Search for the key to be deleted, keep track of the 
        # previous node as we need to change 'prev.next' 
        while(temp is not None): 
            if temp.data == key: 
                break
            prev = temp 
            temp = temp.next
  
        # if key was not present in linked list 
        if(temp == None): 
            return
  
        # Unlink the node from linked list 
        prev.next = temp.next
  
        temp = None
  
  
    # Utility function to print the linked LinkedList 
    def printList(self): 
        temp = self.head 
        while(temp): 
            print (" %d" %(temp.data)), 
            temp = temp.next
  
  
# Driver program 
llist = LinkedList() 
llist.push(7) 
llist.push(1) 
llist.push(3) 
llist.push(2) 
  
print ("Created Linked List: ")
llist.printList() 
llist.deleteNode(1) 
print ("
Linked List after Deletion of 1:")
llist.printList() 
  
# This code is contributed by Nikhil Kumar Singh (nickzuck_007)



输出:
Created Linked List: 
 2  3  1  7 
Linked List after Deletion of 1: 
 2  3  7

请参阅链表上的完整文章 |设置 3(删除节点)了解更多详情!