📌  相关文章
📜  用于在给定位置删除链表节点的Python程序

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

用于在给定位置删除链表节点的Python程序

给定一个单链表和一个位置,删除给定位置的链表节点。

例子:

Input: position = 1, Linked List = 8->2->3->1->7
Output: Linked List =  8->3->1->7

Input: position = 0, Linked List = 8->2->3->1->7
Output: Linked List = 2->3->1->7

如果要删除的节点是根节点,直接删除即可。要删除中间节点,我们必须有一个指向要删除的节点之前的节点的指针。因此,如果位置不为零,我们运行一个循环位置 1 次并获得指向前一个节点的指针。

下面是上述思想的实现。

Python
# Python program to delete a node in a linked list
# at a given position
  
# Node class 
class Node:
  
    # Constructor to initialize the node object
    def __init__(self, data):
        self.data = data
        self.next = None
  
class LinkedList:
  
    # Constructor 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 position, delete the node at a given position
    def deleteNode(self, position):
  
        # If linked list is empty
        if self.head == None:
            return 
  
        # Store head node
        temp = self.head
  
        # If head needs to be removed
        if position == 0:
            self.head = temp.next
            temp = None
            return 
  
        # Find previous node of the node to be deleted
        for i in range(position -1 ):
            temp = temp.next
            if temp is None:
                break
  
        # If position is more than number of nodes
        if temp is None:
            return 
        if temp.next is None:
            return 
  
        # Node temp.next is the node to be deleted
        # store pointer to the next of node to be deleted
        next = temp.next.next
  
        # Unlink the node from linked list
        temp.next = None
  
        temp.next = next 
  
  
    # Utility function to print the linked LinkedList
    def printList(self):
        temp = self.head
        while(temp):
            print " %d " %(temp.data),
            temp = temp.next
  
  
# Driver program to test above function
llist = LinkedList()
llist.push(7)
llist.push(1)
llist.push(3)
llist.push(2)
llist.push(8)
  
print "Created Linked List: "
llist.printList()
llist.deleteNode(4)
print "
Linked List after Deletion at position 4: "
llist.printList()
  
# This code is contributed by Nikhil Kumar Singh(nickzuck_007)


输出:

Created Linked List: 
 8  2  3  1  7 
Linked List after Deletion at position 4: 
 8  2  3  1 

有关详细信息,请参阅有关在给定位置删除链接列表节点的完整文章!