Consider the following program to create a doubly linked list containing n nodes.

public 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());

}

}