Open In App
Related Articles

Python Program For Deleting A Linked List Node At A Given Position

Like Article
Save Article
Report issue

Given a singly linked list and a position, delete a linked list node at the given position.


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

If the node to be deleted is the root, simply delete it. To delete a middle node, we must have a pointer to the node previous to the node to be deleted. So if positions are not zero, we run a loop position-1 times and get a pointer to the previous node.

Below is the implementation of the above idea.


# 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): = data = 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) = 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:
        # Store head node
        temp = self.head
        # If head needs to be removed
        if position == 0:
            self.head =
            temp = None
        # Find previous node of the node to be deleted
        for i in range(position -1 ):
            temp =
            if temp is None:
        # If position is more than number of nodes
        if temp is None:
        if is None:
        # Node is the node to be deleted
        # store pointer to the next of node to be deleted
        next =
        # Unlink the node from linked list = None
 = next
    # Utility function to print the linked LinkedList
    def printList(self):
        temp = self.head
            print " %d " %(,
            temp =
# Driver program to test above function
llist = LinkedList()
print "Created Linked List: "
print "
Linked List after Deletion at position 4: "
# 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 

Time Complexity: O(n), where n represents the length of the given linked list.
Auxiliary Space: O(1), no extra space is required, so it is a constant.

Please refer complete article on Delete a Linked List node at a given position for more details!

Last Updated : 15 Jun, 2022
Like Article
Save Article
Share your thoughts in the comments
Similar Reads