# Java - Count nodes in the Doubly Linked List

Counting nodes in a doubly linked list is very useful while working on it. It requires creating a temp node pointing to the head of the list and a variable called *i* with initial value 0. If the temp node is not null, increase *i* by 1 and move to the next node using temp next. Repeat the process till the temp node becomes null. The final value of *i* will be the total number of nodes in the doubly linked list.

The function *countNodes* is created for this purpose. It is a **4-step process**.

int countNodes() { //1. create a temp node pointing to head Node temp = new Node(); temp = this.head; //2. create a variable to count nodes int i = 0; //3. if the temp node is not null increase // i by 1 and move to the next node, repeat // the process till the temp becomes null while(temp != null) { i++; temp = temp.next; } //4. return the count return i; }

The below is a complete program that uses above discussed concept of counting the total number of nodes of a doubly linked list.

//node structure class Node { int data; Node next; Node prev; }; class LinkedList { Node head; LinkedList(){ head = null; } //Add new element at the end of the list void push_back(int newElement) { Node newNode = new Node(); newNode.data = newElement; newNode.next = null; newNode.prev = null; if(head == null) { head = newNode; } else { Node temp = new Node(); temp = head; while(temp.next != null) temp = temp.next; temp.next = newNode; newNode.prev = temp; } } //count nodes in the list int countNodes() { Node temp = new Node(); temp = this.head; int i = 0; while(temp != null) { i++; temp = temp.next; } return i; } //display the content of the list void PrintList() { Node temp = new Node(); temp = this.head; if(temp != null) { System.out.print("\nThe list contains: "); while(temp != null) { System.out.print(temp.data + " "); temp = temp.next; } } else { System.out.print("\nThe list is empty."); } } }; // test the code public class Implementation { public static void main(String[] args) { LinkedList MyList = new LinkedList(); //Add four elements in the list. MyList.push_back(10); MyList.push_back(20); MyList.push_back(30); MyList.push_back(40); //Display the content of the list. MyList.PrintList(); //number of nodes in the list System.out.print("\nNo. of nodes: "+ MyList.countNodes()); } }

The above code will give the following output:

The list contains: 10 20 30 40 No. of nodes: 4