# Python - Insert a new node at the start of the Doubly Linked List

In this method, a new node is inserted at the start of the doubly linked list. For example - if the given List is 10->20->30 and a new element 100 is added at the start, the List becomes 100->10->20->30.

Inserting a new node at the start of the doubly linked list is very easy. First, a new node with given element is created. It is then added at the start of the list by linking the head node to the new node.

The function *push_front* is created for this purpose. It is a **5-step process**.

def push_front(self, newElement): #1 & 2 & 3. allocate node, assign data element, assign # null to the next and prev of the new node newNode = Node(newElement) #4. Check the list is empty or not, # if empty make the new node as head if(self.head == None): self.head = newNode return else: #5. Adjust the links and make the new # node as head self.head.prev = newNode newNode.next = self.head self.head = newNode

The below is a complete program that uses above discussed concept to insert new node at the start of the doubly linked list.

# node structure class Node: def __init__(self, data): self.data = data self.next = None self.prev = None #class Linked List class LinkedList: def __init__(self): self.head = None #Add new element at the start of the list def push_front(self, newElement): newNode = Node(newElement) if(self.head == None): self.head = newNode return else: self.head.prev = newNode newNode.next = self.head self.head = newNode #display the content of the list def PrintList(self): temp = self.head if(temp != None): print("\nThe list contains:", end=" ") while (temp != None): print(temp.data, end=" ") temp = temp.next else: print("\nThe list is empty.") # test the code MyList = LinkedList() #Add three elements at the start of the list. MyList.push_front(10) MyList.push_front(20) MyList.push_front(30) MyList.PrintList()

The above code will give the following output:

The list contains: 30 20 10