# Insertion in Dobly linked list | Data structures

Insertion in a doubly-linked list: as we know in the node of the doubly linked list we have two link parts and one info part. and every node holds the reference of the previous and next node.

so to insert the new node at any position like at the first position, the last position, in between the nodes and before and after the node we need to maintain both references.

so after completing this tutorial, you will be able to learn about
1. Insert node at the beginning of the linked list
2. Insert node in an empty list.
3. Insert node at the end of the list.
4. Insert node after a node.
5. Insert node before a node.

### Inserting a node at the beginning of the doubly linked list.

to insert a node at the beginning of the list first we allocate a new node called temp. as you see in the image given below.

### Insert a node in an empty doubly-linked list.

as we know we don't have any node in an empty list. so to insert a node in an empty list first we allocate a new node called temp and store the reference of the new node in the start variable.

### Insert a node at the end of the doubly linked list.

to insert a new node at the end of the list first we need a reference of the last node of the doubly linked list. so we find a reference for the last node called p.

### Insert a node after a node in the doubly linked list.

like if we want to insert a node after a node called p.

### Insert a node before a node in the doubly linked list

like if we want to insert a node before a node called p.

#### Python program for inserting a node in the doubly linked list.

```class Node(object):

def __init__(self, value):
self.info = value

def __init__(self):
self.last = None
def display_list(self):

if self.last == None:
print("List is empty\n")
return

while True:
print(p.info, " ", end='')
break        print()

def insert_in_beginning(self, data):
temp = Node(data)

def insert_in_empty_list(self, data):
temp = Node(data)
self.last = temp

def insert_at_end(self,data):
temp = Node(data)
self.last = temp

def create_list(self):
n = int(input("Enter the number of nodes : "))
if n == 0:
return        data = int(input("Enter the element to be inserted : "))
self.insert_in_empty_list(data)

for i in range(n-1):
data = int(input("Enter the element to be inserted : "))
self.insert_at_end(data)

def insert_after(self, data, x):

while True:
if p.info == x:
break
if p == self.last.link and p.info != x:
print(x, " not present in the list")
else:
temp = Node(data)
if p == self.last:
self.last = temp

def delete_first_node(self):
if self.last is None:

def delete_last_node(self):
if self.last is None:
self.last = None            return
self.last = p

def delete_node(self,x):

if self.last is None:
return        if self.last.link == self.last and self.last.info == x:
self.last = None            return        if self.last.link.info == x:
return

else:
if self.last.info == x:
self.last = p

#################################################

list.create_list()

while True:
print("1. Display list")
print("2. Insert in empty list")
print("3. Insert a node in the beginning of the list")
print("4. Insert a node at the end of the list")
print("5. Insert a node after a specified node")
print("6. Delete first node")
print("7. Delete last node")
print("8. Delete any node")
print("9. Quite")

option = int(input("Enter your choice : "))

if option == 1:
list.display_list()
elif option == 2:
data = int(input("Enter the element to be inserted : "))
list.insert_in_empty_list(data)
elif option == 3:
data = int(input("Enter the element to be inserted : "))
list.insert_in_beginning(data)
elif option == 4:
data = int(input("Enter the element to be inserted : "))
list.insert_at_end(data)
elif option == 5:
data = int(input("Enter the element to be inserted : "))
x = int(input("Enter the element after which to insert : "))
list.insert_after(data,x)
elif option == 6:
list.delete_first_node()
elif option == 7:
list.delete_last_node()
elif option == 8:
data = int(input("Enter the element to be deleted : "))
list.delete_node(data)
elif option == 9:
break    else:
print("Wrong option")
print()```