We are going to find lenght of a Linked List using iterative method. You can read the recursive method here.

The simple logic to find length of a Linked list is – to increment a counter until you run out of nodes.

Here is the simple algorithm.

**Step 1** :- Initialize a counter to 0

**Step 2** :- Until we run out of nodes i.e our reference to the nodes become null.

**2-a**) increment the counter by 1

**2-b**) move to the next node

**Step 3** :- return the value of counter

I am providing two implementations.

One is going to be verbose, and other one will be more concise and readable.

**Implementation 1** :-

private static int length(Node head) { if(head == null) return 0; int length = 0; while(head != null) { ++length; head = head .next; } return length; }

You can see that we have initialized a variable and we are incrementing it until we run out of nodes.

**Implementation 2** :-

private static int lengthBetter(Node head) { int length = 0; while(head != null) { ++length; head = head .next; } return length; }

This one is more concise. It does not have the if-statement.

Now, I am going to walk you through the code.

**The Step 1** :- create a counter

int length = 0;

**The Step 2** :- while we have nodes – **1**. increment counter **2**. move to the next node

while(head != null) { ++length; head = head .next; }

**The step 3** :- return the counter value

return length;

**Complete Code**

public class LinkedListLengthIterative { private static class Node { int data; Node next; Node prev; Node(final int data) { this .data = data; } } public static void main(String ... args) { Node a = new Node(1); Node b = new Node(2); Node c = new Node(3); Node d = new Node(4); a .next = b; b .next = c; c .next = d; System.out.println("Length is :- " + length(a)); System .out .println("Length is :- " + lengthBetter(a)); } //Method 1 private static int length(Node head) { if(head == null) return 0; int length = 0; while(head != null) { ++length; head = head .next; } return length; } //Method 2 private static int lengthBetter(Node head) { int length = 0; while(head != null) { ++length; head = head .next; } return length; } }