Open In App

Count nodes in Circular linked list

Last Updated : 31 Aug, 2024
Summarize
Comments
Improve
Suggest changes
Like Article
Like
Share
Report
News Follow

Given a circular linked list. The task is to find the length of the linked list, where length is defined as the number of nodes in the linked list.

Count-nodes-in-Circular-Linked-List

count nodes in the circular linked list.

Using linear traversal – O(n) time and O(1) space

The idea is to start from the head node and traversing the list until it loops back to the head. Since a circular linked list has no end, the traversal continues until the current node equals the head again. Increment the counter variable during each step of the traversal of nodes. Finally return the count, which represent the count of nodes in circular linked list.

C++
// C++ program to count number of nodes 
// in a circular linked list.

#include <iostream>
using namespace std;

class Node {
public:
    int data;
    Node* next;

    Node(int x) {
        data = x;
        next = nullptr;
    }
};

// Function to count nodes in a given Circular
// linked list 
int countNodes(Node* head) {
    if (head == nullptr) return 0;

    Node* curr = head;
    int result = 0;

    do {
        curr = curr->next;
        result++;
    } while (curr != head);

    return result;
}

int main() {
  
    // Create list: 1->2->3->4->5--->1
    Node* head = new Node(1);
    head->next = new Node(2);
    head->next->next = new Node(3);
    head->next->next->next = new Node(4);
    head->next->next->next->next = new Node(5);
    head->next->next->next->next->next = head;

    cout << countNodes(head);

    return 0;
}
C Java Python C# JavaScript

Output
5

Time Complexity: O(n), where n is the length of given linked list.
Auxiliary Space: O(1)



Next Article

Similar Reads

three90RightbarBannerImg