Given a singly linked list and a position, delete a linked list node at the given position.
Example:
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):
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) |
Output:
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!