C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Q. Program to create and display a doubly linked list.ExplanationIn this program, we will create a doubly linked list and print all the nodes present in the list. Doubly Linked List: Doubly Linked List is a variation of the linked list. The linked list is a linear data structure which can be described as the collection of nodes. Nodes are connected through pointers. Each node contains two fields: data and pointer to the next field. The first node of the linked list is called the head, and the last node of the list is called the tail of the list. One of the limitations of the singly linked list is that it can be traversed in only one direction that is forward. The doubly linked list has overcome this limitation by providing an additional pointer that points to the previous node. With the help of the previous pointer, the doubly linked list can be traversed in a backward direction thus making insertion and deletion operation easier to perform. So, a typical node in the doubly linked list consists of three fields: Data represents the data value stored in the node. Previous represents a pointer that points to the previous node. Next represents a pointer that points to next node in the list. Above picture represents a doubly linked list in which each node has two pointers to point to previous and next node respectively. Here, node 1 represents the head of the list. The previous pointer of the head node will always point to NULL. Next pointer of node one will point to node 2. Node 5 represents the tail of the list whose previous pointer will point to node 4, and next will point to NULL. Algorithm
SolutionPython#Represent a node of doubly linked list class Node: def __init__(self,data): self.data = data; self.previous = None; self.next = None; class DoublyLinkedList: #Represent the head and tail of the doubly linked list def __init__(self): self.head = None; self.tail = None; #addNode() will add a node to the list def addNode(self, data): #Create a new node newNode = Node(data); #If list is empty if(self.head == None): #Both head and tail will point to newNode self.head = self.tail = newNode; #head's previous will point to None self.head.previous = None; #tail's next will point to None, as it is the last node of the list self.tail.next = None; else: #newNode will be added after tail such that tail's next will point to newNode self.tail.next = newNode; #newNode's previous will point to tail newNode.previous = self.tail; #newNode will become new tail self.tail = newNode; #As it is last node, tail's next will point to None self.tail.next = None; #display() will print out the nodes of the list def display(self): #Node current will point to head current = self.head; if(self.head == None): print("List is empty"); return; print("Nodes of doubly linked list: "); while(current != None): #Prints each node by incrementing pointer. print(current.data),; current = current.next; dList = DoublyLinkedList(); #Add nodes to the list dList.addNode(1); dList.addNode(2); dList.addNode(3); dList.addNode(4); dList.addNode(5); #Displays the nodes present in the list dList.display(); Output: Nodes of doubly linked list: 1 2 3 4 5 C#include <stdio.h> //Represent a node of the doubly linked list struct node{ int data; struct node *previous; struct node *next; }; //Represent the head and tail of the doubly linked list struct node *head, *tail = NULL; //addNode() will add a node to the list void addNode(int data) { //Create a new node struct node *newNode = (struct node*)malloc(sizeof(struct node)); newNode->data = data; //If list is empty if(head == NULL) { //Both head and tail will point to newNode head = tail = newNode; //head's previous will point to NULL head->previous = NULL; //tail's next will point to NULL, as it is the last node of the list tail->next = NULL; } else { //newNode will be added after tail such that tail's next will point to newNode tail->next = newNode; //newNode's previous will point to tail newNode->previous = tail; //newNode will become new tail tail = newNode; //As it is last node, tail's next will point to NULL tail->next = NULL; } } //display() will print out the nodes of the list void display() { //Node current will point to head struct node *current = head; if(head == NULL) { printf("List is empty\n"); return; } printf("Nodes of doubly linked list: \n"); while(current != NULL) { //Prints each node by incrementing pointer. printf("%d ", current->data); current = current->next; } } int main() { //Add nodes to the list addNode(1); addNode(2); addNode(3); addNode(4); addNode(5); //Displays the nodes present in the list display(); return 0; } Output: Nodes of doubly linked list: 1 2 3 4 5 JAVApublic class DoublyLinkedList { //Represent a node of the doubly linked list class Node{ int data; Node previous; Node next; public Node(int data) { this.data = data; } } //Represent the head and tail of the doubly linked list Node head, tail = null; //addNode() will add a node to the list public void addNode(int data) { //Create a new node Node newNode = new Node(data); //If list is empty if(head == null) { //Both head and tail will point to newNode head = tail = newNode; //head's previous will point to null head.previous = null; //tail's next will point to null, as it is the last node of the list tail.next = null; } else { //newNode will be added after tail such that tail's next will point to newNode tail.next = newNode; //newNode's previous will point to tail newNode.previous = tail; //newNode will become new tail tail = newNode; //As it is last node, tail's next will point to null tail.next = null; } } //display() will print out the nodes of the list public void display() { //Node current will point to head Node current = head; if(head == null) { System.out.println("List is empty"); return; } System.out.println("Nodes of doubly linked list: "); while(current != null) { //Prints each node by incrementing the pointer. System.out.print(current.data + " "); current = current.next; } } public static void main(String[] args) { DoublyLinkedList dList = new DoublyLinkedList(); //Add nodes to the list dList.addNode(1); dList.addNode(2); dList.addNode(3); dList.addNode(4); dList.addNode(5); //Displays the nodes present in the list dList.display(); } } Output: Nodes of doubly linked list: 1 2 3 4 5 C#using System; namespace DoublyLinkedList { public class Program { //Represent a node of the doubly linked list public class Node<T>{ public T data; public Node<T> previous; public Node<T> next; public Node(T value) { data = value; } } public class DoublyLinkedList<T>{ //Represent the head and tail of the doubly linked list protected Node<T> head = null; protected Node<T> tail = null; //addNode() will add a node to the list public void addNode(T data) { //Create a new node Node<T> newNode = new Node<T>(data); //If list is empty if(head == null) { //Both head and tail will point to newNode head = tail = newNode; //head's previous will point to null head.previous = null; //tail's next will point to null, as it is the last node of the list tail.next = null; } else { //newNode will be added after tail such that tail's next will point to newNode tail.next = newNode; //newNode's previous will point to tail newNode.previous = tail; //newNode will become new tail tail = newNode; //As it is last node, tail's next will point to null tail.next = null; } } //display() will print out the nodes of the list public void display() { //Node current will point to head Node<T> current = head; if(head == null) { Console.WriteLine("List is empty"); return; } Console.WriteLine("Nodes of doubly linked list: "); while(current != null) { //Prints each node by incrementing the pointer. Console.Write(current.data + " "); current = current.next; } } } public static void Main() { DoublyLinkedList<int> dList = new DoublyLinkedList<int>(); //Add nodes to the list dList.addNode(1); dList.addNode(2); dList.addNode(3); dList.addNode(4); dList.addNode(5); //Displays the nodes present in the list dList.display(); } } } Output: Nodes of doubly linked list: 1 2 3 4 5 PHP<!DOCTYPE html> <html> <body> <?php //Represent a node of doubly linked list class Node{ public $data; public $previous; public $next; function __construct($data){ $this->data = $data; } } class DoublyLinkedList{ //Represent the head and tail of the doubly linked list public $head; public $tail; function __construct(){ $this->head = NULL; $this->tail = NULL; } //addNode() will add a node to the list function addNode($data){ //Create a new node $newNode = new Node($data); //If list is empty if($this->head == NULL) { //Both head and tail will point to newNode $this->head = $this->tail = $newNode; //head's previous will point to NULL $this->head->previous = NULL; //tail's next will point to NULL, as it is the last node of the list $this->tail->next = NULL; } else { //newNode will be added after tail such that tail's next will point to newNode $this->tail->next = $newNode; //newNode's previous will point to tail $newNode->previous = $this->tail; //newNode will become new tail $this->tail = $newNode; //As it is last node, tail's next will point to NULL $this->tail->next = NULL; } } //display() will print out the nodes of the list function display() { //Node current will point to head $current = $this->head; if($this->head == NULL) { print("List is empty <br>"); return; } print("Nodes of doubly linked list: <br>"); while($current != NULL) { //Prints each node by incrementing pointer. print($current->data . " "); $current = $current->next; } } } $dList = new DoublyLinkedList(); //Add nodes to the list $dList->addNode(1); $dList->addNode(2); $dList->addNode(3); $dList->addNode(4); $dList->addNode(5); //Displays the nodes present in the list $dList->display(); ?> </body> </html> Output: Nodes of doubly linked list: 1 2 3 4 5
Next Topic#
|