# 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
81

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

# Constructor for empty Doubly Linked List
def __init__(self):

# Function to delete a node in a Doubly Linked List.
# 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

# 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)

# 4. change prev of head node to new_node

# 5. move the head to point to the new node

def printList(self, node):
while(node is not None):
print node.data,
node = node.next

# Driver program to test the above functions

# Let us create the doubly linked list 10<->8<->4<->2
dll.push(2);
dll.push(4);
dll.push(8);
dll.push(10);

# delete nodes from doubly linked list
# Modified linked list will be NULL<-8->NULL
```Original Linked list 10 8 4 2