Skip to content
  • Linkedin
  • Youtube
  • Pinterest
  • Home
  • Privacy Policy
  • About
  • Contact
Programmingoneonone

Programmingoneonone

Programmingoneonone is a website that publishes daily tutorials, methods, guides, and articles on IT, Education, and technology.

  • Home
  • Human Values
  • DSA
  • IoT Tutorials
  • Interview Questions and Answers
  • Toggle search form
Insertion in doubly linked list in DSA

Insertion in Doubly Linked List

Posted on 20 May 202023 April 2023 By YASH PAL No Comments on Insertion in Doubly Linked List

Insertion in the 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. Insertion at the beginning of the doubly 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.

Insert at beginning of doubly linked list

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

insertion in doubly linked list

after that, we store the first node’s reference in the temp node’s next link part.

insertion in doubly linked list

and then we store the new node temp’s reference in the first node of the list. as you see in the image given below.

insertion in doubly linked list

after performing these steps we inserted a new node at the beginning of the list.

Insert a node in an empty doubly linked list

as we know we don’t have any node in an empty list.

insertion in doubly linked 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.

insertion in doubly linked list

Insert a node at the end

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.

insertion in doubly linked list

after that, we allocate a new node called temp.

insertion in doubly linked list

and then we store the new node’s reference in the next link part of the node p.

insertion in doubly linked list

and then we store the p node’s reference into the new node’s previous link part.

insertion in doubly linked list

after performing these steps we now inserted a new node at the end of the list.

Insert a node after a node

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

insertion in doubly linked list

then we first allocate a new node called temp.

insertion in doubly linked list

and then store the p node’s reference into the temp node’s previous link part.

insertion in doubly linked list

and then we store the node’s reference that comes after the node p into the temp node’s next link part.

insertion in doubly linked list

and then we store the temp node’s reference into the node’s previous link part that comes after the node p.

insertion in doubly linked list

and then we store the temp node’s reference into the p node’s next link part.

insertion in doubly linked list

after completing these steps we now inserted a new node before a node called p in the doubly linked list.

Insert a node before a node

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

insertion in doubly linked list

first, we allocate a new node called temp.

insertion in doubly linked list

and then we store the node’s reference that comes before the node p into the temp node’s previous link.

insertion in doubly linked list

and then we store the reference of p node into the temp node’s next link part.

insertion in doubly linked list

after that, we store the temp node’s reference into the next link part of the node that comes before the node p.

insertion in doubly linked list

after that, we store the temp node’s reference into the previous link part of the node p.

insertion in doubly linked list

after performing these steps we now inserted a new node before a node called p.

class Node(object):

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

class CircularLinkedList(object):

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

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

        while True:
            print(p.info, " ", end='')
            p = p.link
            if p == self.last.link:
                break        print()

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

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

    def insert_at_end(self,data):
        temp = Node(data)
        temp.link = self.last.link
        self.last.link = temp
        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):
        p = self.last.link

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

    def delete_first_node(self):
        if self.last is None:
            return        if self.last.link == self.last:
            self.last = None            return        self.last.link = self.last.link.link

    def delete_last_node(self):
        if self.last is None:
            return        if self.last.link == self.last:
            self.last = None            return
        p = self.last.link
        while p.link != self.last:
            p = p.link
        p.link = self.last.link
        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:
            self.last.link == self.last.link.link
            return
        p = self.last.link
        while p.link != self.last.link:
            if p.link.info == x:
                break            p = p.link

        if p.link == self.last.link:
            print(x, " not found in the list")
        else:
            p.link = p.link.link
            if self.last.info == x:
                self.last = p

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

list = CircularLinkedList()


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()
Computer Science Tutorials, Data Structures Tutorials Tags:computer science, Data Structure

Post navigation

Previous Post: Doubly linked list in Data Structure
Next Post: Deletion in Doubly Linked List

Related Tutorials

programming languages for machine learning and data science Top Programming Languages For Machine Learning Computer Science Tutorials
Introduction to Statistics for Data Science: Building a Solid Foundation Computer Science Tutorials
How to Become a Successful Data Engineer in the Data Science Field – Complete Guide Computer Science Tutorials
Is Python a good language for Machine Learning/AI? Computer Science Tutorials
basics of boolean algebra Its Operators, Laws, and Examples Basics of Boolean Algebra: Its Operators, Laws, and Examples Boolean Algebra
x winodws in linux X Windows system in Linux Computer Science Tutorials

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Pick your Subject

  • Internet of Things
  • Data Structures/Algorithms
  • Interview Preparation
  • Human Values
  • Java Interview Questions and Answers (2023)
    Thinking of becoming a Java developer? I must say it’s a good choice! Java is continuously named the most popular programming language. And the … Read more
  • Iot(Internet of things) in healthcare
    IoT in Healthcare
    IoMT (Internet of Medical Things) stands for devices that can collect and exchange data – either with users or other devices via the internet, … Read more
  • four stages of iot solution for industry
    IoT for Industry
    In this post, we are going to learn about use cases of IoT for Industry and four stages for providing IoT solutions. Machine Diagnosis … Read more
  • Iot for agricultural
    IoT in Agriculture
    IoT technology has realized smart wearables, connected devices, automated machines, and driverless cars. However, in agriculture, the IoT has brought the greatest impact. Amongst the challenges … Read more
  • Iot for logistics
    IoT in Logistics and Supply Chain
    IoT applications for smart logistics and supply chain systems:  Logistics Fleet Tracking  To track the locations of the vehicles in real time, the vehicle … Read more
  • Algorithms Tutorials
  • Basic Programming
  • Boolean Algebra
  • C Programming Tutorials
  • C++ Tutorials
  • Compiler Design Tutorials
  • Computer Networks Tutorials
  • Computer Organization Tutorials
  • Computer Science Tutorials
  • Data Structures Tutorials
  • DBMS Tutorials
  • Developer Guide
  • Digital Communication
  • Digital Logic Tutorials
  • Internet of Things Tutorials
  • Internet Tutorials
  • Interview questions answers
  • Java Tutorials
  • Javascript Tutorials
  • Linux
  • Machine Learning Tutorials
  • Operating Systems Tutorials
  • Programming Tutorials
  • Projects
  • Tips&Tricks
  • Tools
  • VBScript Tutorials
  • Java Interview Questions and Answers (2023)
    Thinking of becoming a Java developer? I must say it’s a good choice! Java is continuously named the most popular programming language. And the … Read more
  • Iot(Internet of things) in healthcare
    IoT in Healthcare
    IoMT (Internet of Medical Things) stands for devices that can collect and exchange data – either with users or other devices via the internet, … Read more
  • four stages of iot solution for industry
    IoT for Industry
    In this post, we are going to learn about use cases of IoT for Industry and four stages for providing IoT solutions. Machine Diagnosis … Read more
  • Iot for agricultural
    IoT in Agriculture
    IoT technology has realized smart wearables, connected devices, automated machines, and driverless cars. However, in agriculture, the IoT has brought the greatest impact. Amongst the challenges … Read more
  • Iot for logistics
    IoT in Logistics and Supply Chain
    IoT applications for smart logistics and supply chain systems:  Logistics Fleet Tracking  To track the locations of the vehicles in real time, the vehicle … Read more

Copyright © 2023 Programmingoneonone.

Powered by PressBook Blog WordPress theme