Python Program to delete a new node from the middle of the doubly linked list.

Here in this Python Program, you will learn how you can delete a node from the middle of the doubly linked list.

0
25
Python Program to delete a new node from the middle of the doubly linked list

Here in this Python Program, you will learn how you can delete a new node from the middle of the doubly linked list.

Algorithm

Let the node to be deleted is del.

  1. If the node to be deleted is a head node, then change the head pointer to next current head.
  2. Set next of previous to del, if previous to del exists.
  3. Set prev of next to del, if next to del exists.

Program to delete a new node from the middle of the doubly linked list.

# for Garbage collection 
import gc 
  
# A node of the doublly linked list 
class Node: 
      
    # Constructor to create a new node 
    def __init__(self, data): 
        self.data = data  
        self.next = None
        self.prev = None
  
class DoublyLinkedList: 
     # Constructor for empty Doubly Linked List 
    def __init__(self): 
        self.head = None
   
   # Function to delete a node in a Doubly Linked List. 
   # head_ref --> pointer to head node pointer. 
   # dele --> pointer to node to be deleted 
  
    def deleteNode(self, dele): 
          
        # Base Case 
        if self.head is None or dele is None: 
            return 
          
        # If node to be deleted is head node 
        if self.head == dele: 
            self.head = dele.next
  
        # Change next only if node to be deleted is NOT 
        # the last node 
        if dele.next is not None: 
            dele.next.prev = dele.prev 
      
        # Change prev only if node to be deleted is NOT  
        # the first node 
        if dele.prev is not None: 
            dele.prev.next = dele.next
        # Finally, free the memory occupied by dele 
        # Call python garbage collector 
        gc.collect() 
  
  
    # Given a reference to the head of a list and an 
    # integer, inserts a new node on the front of list 
    def push(self, new_data): 
   
        # 1. Allocates node 
        # 2. Put the data in it 
        new_node = Node(new_data) 
   
        # 3. Make next of new node as head and 
        # previous as None (already None) 
        new_node.next = self.head 
   
        # 4. change prev of head node to new_node 
        if self.head is not None: 
            self.head.prev = new_node 
   
        # 5. move the head to point to the new node 
        self.head = new_node 
  
  
    def printList(self, node): 
        while(node is not None): 
            print node.data, 
            node = node.next
  
  
# Driver program to test the above functions 
  
# Start with empty list 
dll = DoublyLinkedList() 
  
# Let us create the doubly linked list 10<->8<->4<->2 
dll.push(2); 
dll.push(4); 
dll.push(8); 
dll.push(10); 
  
print "\n Original Linked List", 
dll.printList(dll.head) 
  
# delete nodes from doubly linked list 
dll.deleteNode(dll.head) 
dll.deleteNode(dll.head.next) 
dll.deleteNode(dll.head.next) 
# Modified linked list will be NULL<-8->NULL 
print "\n Modified Linked List", 
dll.printList(dll.head)

Output

Original Linked list 10 8 4 2 
Modified Linked list 8

The Time Complexity of the above prom is: O(1)

Related Program

  1. Python Program to Find LCM
  2. Python Program to Find HCF or GCD
  3. Python Program To Display Powers of 2 Using Anonymous Function
  4. Python Program to Display Calendar
  5. Python Program to find the Square Roots
  6. Python Program to Shuffle Deck of Cards
  7. Python program convert decimal number to binary number using recursion
  8. Python Program to Find Factorial of a Number Using Recursion
  9. Python Program to Check if a Number is Positive, Negative or 0
  10. Python Program to Generate a Random Alphanumeric String

Ask your questions and clarify your/others doubts on how you can delete the node from middle of the doubly linked list by commenting. Python Documentation