Count nodes in Circular linked list Last Updated : 31 Aug, 2024 Comments Improve Suggest changes Like Article Like Report 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 the circular linked list.Using linear traversal - O(n) time and O(1) spaceThe 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 // C program to count number of nodes // in a circular linked list. #include <stdio.h> #include <stdlib.h> struct Node { int data; struct Node* next; }; // Function to count nodes in a given Circular // linked list int countNodes(struct Node* head) { if (head == NULL) return 0; struct Node* curr = head; int result = 0; do { curr = curr->next; result++; } while (curr != head); return result; } struct Node* createNode(int new_data) { struct Node* new_node = (struct Node*)malloc(sizeof(struct Node)); new_node->data = new_data; new_node->next = NULL; return new_node; } int main() { // Create list: 1->2->3->4->5--->1 struct Node* head = createNode(1); head->next = createNode(2); head->next->next = createNode(3); head->next->next->next = createNode(4); head->next->next->next->next = createNode(5); head->next->next->next->next->next = head; printf("%d", countNodes(head)); return 0; } Java // Java program to count number of nodes // in a circular linked list class Node { int data; Node next; Node(int new_data) { data = new_data; next = null; } } // Function to count nodes in a given Circular // linked list class GfG { static int countNodes(Node head) { if (head == null) return 0; Node curr = head; int result = 0; do { curr = curr.next; result++; } while (curr != head); return result; } public static void main(String[] args) { // 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; System.out.println(countNodes(head)); } } Python # Python3 program to count number of # nodes in a circular linked list. class Node: def __init__(self, data): self.data = data self.next = None # Function to count nodes # in a given Circular linked list def countNodes(head): curr = head result = 0 # return 0 for empty lists if (head == None) : return 0 while True : curr = curr.next result = result + 1 if (curr == head): break return result if __name__=='__main__': # create list: 1->2->3->4->5--->1 head = Node(1) head.next = Node(2) head.next.next = Node(3) head.next.next.next = Node(4) head.next.next.next.next = Node(5) head.next.next.next.next.next = head print(countNodes(head)) C# // C++ program to count number of nodes // in a circular linked list using System; class Node { public int Data; public Node Next; public Node(int newData) { Data = newData; Next = null; } } // Function to count nodes in a given Circular // linked list class GfG { static int CountNodes(Node head) { if (head == null) return 0; Node curr = head; int result = 0; do { curr = curr.Next; result++; } while (curr != head); return result; } static void 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; Console.WriteLine(CountNodes(head)); } } JavaScript // JavaScript program to count number // of nodes in a circular linked list class Node { constructor(newData) { this.data = newData; this.next = null; } } // Function to count nodes in a // given Circular linked list function countNodes(head) { var curr = head; var result = 0; // return 0 for empty lists if (head == null) return 0; do { curr = curr.next; result++; } while (curr != head); return result; } // Create list: 1->2->3->4->5--->1 let 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; console.log(countNodes(head)); Output5Time Complexity: O(n), where n is the length of given linked list.Auxiliary Space: O(1) Comment More infoAdvertise with us Next Article Count nodes in Circular linked list R Rishabh jain Improve Article Tags : Linked List DSA circular linked list Practice Tags : circular linked listLinked List Similar Reads Introduction to Circular Linked List A circular linked list is a data structure where the last node connects back to the first, forming a loop. This structure allows for continuous traversal without any interruptions. Circular linked lists are especially helpful for tasks like scheduling and managing playlists, allowing for smooth navi 15+ min read Circular Linked List in Python A Circular Linked List is a variation of the standard linked list. In a standard linked list, the last element points to null, indicating the end of the list. However, in a circular linked list, the last element points back to the first element, forming a loop. In this article, we will discuss the c 13 min read Count Occurrences in a Linked List Given a singly linked list and a key, the task is to count the number of occurrences of the given key in the linked list. Example : Input : head: 1->2->1->2->1->3->1 , key = 1Output : 4 Explanation: key equals 1 has 4 occurrences.Input : head: 1->2->1->2->1, key = 3Outp 9 min read Exchange first and last nodes in Circular Linked List Given Circular linked list exchange the first and the last node. The task should be done with only one extra node, you can not declare more than one extra node, and also you are not allowed to declare any other temporary variable. Note: Extra node means the need of a node to traverse a list. Example 15+ min read Circular Linked List meaning in DSA A circular linked list is a special type of linked list in which the last node is connected to the first node, creating a continuous loop. In a circular linked list, each node has a reference to the next node in the sequence, just like in a regular linked list, but the last node's reference points b 3 min read Like