C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Q. Program to create a doubly linked list of n nodes and count the number of nodes.ExplanationIn this program, we will create a doubly linked list and count the number of nodes present in the list. To count the node, we traverse through the list by incrementing the counter by 1. ![]() What count of nodes presents above doubly linked list is 5. 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 CountList: #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; #countNodes() will count the nodes present in the list def countNodes(self): counter = 0; #Node current will point to head current = self.head; while(current != None): #Increment the counter by 1 for each node counter = counter + 1; current = current.next; return counter; #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 = CountList(); #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(); #Counts the nodes present in the given list print("\nCount of nodes present in the list: " + str(dList.countNodes())); Output: Nodes of doubly linked list: 1 2 3 4 5 Count of nodes present in the list: 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; } } //countNodes() will count the nodes present in the list int countNodes() { int counter = 0; //Node current will point to head struct node *current = head; while(current != NULL) { //Increment the counter by 1 for each node counter++; current = current->next; } return counter; } //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(); //Counts the nodes present in the given list printf("\nCount of nodes present in the list: %d", countNodes()); return 0; } Output: Nodes of doubly linked list: 1 2 3 4 5 Count of nodes present in the list: 5 JAVApublic class CountList { //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; } } //countNodes() will count the nodes present in the list public int countNodes() { int counter = 0; //Node current will point to head Node current = head; while(current != null) { //Increment the counter by 1 for each node counter++; current = current.next; } return counter; } //display() will print out the elements 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) { CountList dList = new CountList(); //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(); //Counts the nodes present in the given list System.out.println("\nCount of nodes present in the list: " + dList.countNodes()); } } Output: Nodes of doubly linked list: 1 2 3 4 5 Count of nodes present in the list: 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 CountList<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; } } //countNodes() will count the nodes present in the list public int countNodes() { int counter = 0; //Node current will point to head Node<T> current = head; while(current != null) { //Increment the counter by 1 for each node counter++; current = current.next; } return counter; } //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() { CountList<int> dList = new CountList<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(); //Counts the nodes present in the given list Console.WriteLine("\nCount of nodes present in the list: " + dList.countNodes()); } } } Output: Nodes of doubly linked list: 1 2 3 4 5 Count of nodes present in the list: 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 CountList{ //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; } } //countNodes() will count the nodes present in the list function countNodes() { $counter = 0; //Node current will point to head $current = $this->head; while($current != NULL) { //Increment the counter by 1 for each node $counter++; $current = $current->next; } return $counter; } //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 CountList(); //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(); //Counts the nodes present in the given list print("<br>Count of nodes present in the list: " . $dList->countNodes()); ?> </body> </html> Output: Nodes of doubly linked list: 1 2 3 4 5 Count of nodes present in the list: 5
Next Topic#
|