Related Articles

# Count nodes in Circular linked list

• Difficulty Level : Basic
• Last Updated : 23 Jun, 2021

Given a circular linked list, count the number of nodes in it. For example, the output is 5 for the below list. We use the concept used in Circular Linked List | Set 2 (Traversal). While traversing, we keep track of the count of nodes.

## C++

 `//  c++  program to count number of nodes in``// a circular linked list.``#include ``using` `namespace` `std;` `/*structure for a node*/` `struct` `Node {``    ``int` `data;``    ``Node* next;``    ``Node(``int` `x)``    ``{``        ``data = x;``        ``next = NULL;``    ``}``};``/* Function to insert a node at the beginning``of a Circular linked list */``struct` `Node* push(``struct` `Node* last, ``int` `data)``{``    ``if` `(last == NULL) {``        ``struct` `Node* temp``            ``= (``struct` `Node*)``malloc``(``sizeof``(``struct` `Node));` `        ``// Assigning the data.``        ``temp->data = data;``        ``last = temp;``        ``// Note : list was empty. We link single node``        ``// to itself.``        ``temp->next = last;` `        ``return` `last;``    ``}` `    ``// Creating a node dynamically.``    ``struct` `Node* temp``        ``= (``struct` `Node*)``malloc``(``sizeof``(``struct` `Node));` `    ``// Assigning the data.``    ``temp->data = data;` `    ``// Adjusting the links.``    ``temp->next = last->next;``    ``last->next = temp;` `    ``return` `last;``}` `/* Function to  count  nodes in a given Circular``linked list */` `int` `countNodes(Node* head)``{``    ``Node* temp = head;``    ``int` `result = 0;``    ``if` `(head != NULL) {``        ``do` `{``            ``temp = temp->next;``            ``result++;``        ``} ``while` `(temp != head);``    ``}` `    ``return` `result;``}` `/* Driver program to test above functions */``int` `main()``{``    ``/* Initialize lists as empty */``    ``Node* head = NULL;``    ``head = push(head, 12);``    ``head = push(head, 56);``    ``head = push(head, 2);``    ``head = push(head, 11);``    ``cout << countNodes(head);``    ``return` `0;``}` `// This code is contributed by anushikaseth.`

## Java

 `// Java program to count number of nodes in``// a circular linked list.``class` `GFG``{` `/* ure for a node */``static` `class` `Node``{``    ``int` `data;``    ``Node next;``};` `/* Function to insert a node at the beginning``of a Circular linked list */``static` `Node push( Node head_ref, ``int` `data)``{``    ``Node ptr1 = ``new` `Node();``    ``Node temp = head_ref;``    ``ptr1.data = data;``    ``ptr1.next = head_ref;` `    ``/* If linked list is not null then set``    ``the next of last node */``    ``if` `(head_ref != ``null``)``    ``{``        ``while` `(temp.next != head_ref)``            ``temp = temp.next;``        ``temp.next = ptr1;``    ``} ``else``        ``ptr1.next = ptr1; ``/*For the first node */` `    ``head_ref = ptr1;``    ``return` `head_ref;``}` `/* Function to print nodes in a given Circular``linked list */``static` `int` `countNodes( Node head)``{``    ``Node temp = head;``    ``int` `result = ``0``;``    ``if` `(head != ``null``)``    ``{``        ``do``        ``{``            ``temp = temp.next;``            ``result++;``        ``} ``while` `(temp != head);``    ``}` `    ``return` `result;``}` `/* Driver program to test above functions */``public` `static` `void` `main(String args[])``{``    ``/* Initialize lists as empty */``    ``Node head = ``null``;``    ``head = push(head, ``12``);``    ``head = push(head, ``56``);``    ``head = push(head, ``2``);``    ``head = push(head, ``11``);` `    ``System.out.printf(``"%d"``, countNodes(head));``}``}` `// This code is contributed by Arnab Kundu`

## Python3

 `# Python3 program to count number of nodes in``# a circular linked list.` `# structure for a node``class` `Node:``    ``def` `__init__(``self``, data):``        ``self``.data ``=` `data``        ``self``.``next` `=` `None` `# Function to insert a node at the beginning``# of a Circular linked list */``def` `push(head_ref,data):` `    ``ptr1 ``=` `Node(``0``)``    ``temp ``=` `head_ref``    ``ptr1.data ``=` `data``    ``ptr1.``next` `=` `head_ref` `    ``# If the linked list is not None then set``    ``# the next of last node``    ``if` `(head_ref !``=` `None``) :``        ``while` `(temp.``next` `!``=` `head_ref):``            ``temp ``=` `temp.``next``        ``temp.``next` `=` `ptr1``    ``else``:``        ``ptr1.``next` `=` `ptr1 ``#For the first node */` `    ``head_ref ``=` `ptr1``    ``return` `head_ref` `# Function to print nodes``# in a given Circular linked list``def` `countNodes(head):` `    ``temp ``=` `head``    ``result ``=` `0``    ``if` `(head !``=` `None``) :``        ``while` `True` `:``            ``temp ``=` `temp.``next``            ``result ``=` `result ``+` `1``            ``if` `(temp ``=``=` `head):``                ``break``    ` `    ``return` `result` `# Driver Code``if` `__name__``=``=``'__main__'``:` `    ``# Initialize lists as empty */``    ``head ``=` `None``    ``head ``=` `push(head, ``12``)``    ``head ``=` `push(head, ``56``)``    ``head ``=` `push(head, ``2``)``    ``head ``=` `push(head, ``11``)` `    ``print``( countNodes(head))``    ` `# This code is contributed by Arnab Kundu`

## C#

 `// C# program to count number of nodes in``// a circular linked list.``using` `System;` `class` `GFG``{` `/* structure for a node */``public` `class` `Node``{``    ``public` `int` `data;``    ``public` `Node next;``};` `/* Function to insert a node at the beginning``of a Circular linked list */``static` `Node push( Node head_ref, ``int` `data)``{``    ``Node ptr1 = ``new` `Node();``    ``Node temp = head_ref;``    ``ptr1.data = data;``    ``ptr1.next = head_ref;` `    ``/* If linked list is not null then set``    ``the next of last node */``    ``if` `(head_ref != ``null``)``    ``{``        ``while` `(temp.next != head_ref)``            ``temp = temp.next;``        ``temp.next = ptr1;``    ``} ``else``        ``ptr1.next = ptr1; ``/*For the first node */` `    ``head_ref = ptr1;``    ``return` `head_ref;``}` `/* Function to print nodes in a given Circular``linked list */``static` `int` `countNodes( Node head)``{``    ``Node temp = head;``    ``int` `result = 0;``    ``if` `(head != ``null``)``    ``{``        ``do``        ``{``            ``temp = temp.next;``            ``result++;``        ``} ``while` `(temp != head);``    ``}` `    ``return` `result;``}` `/* Driver code */``public` `static` `void` `Main(String []args)``{``    ``/* Initialize lists as empty */``    ``Node head = ``null``;``    ``head = push(head, 12);``    ``head = push(head, 56);``    ``head = push(head, 2);``    ``head = push(head, 11);` `    ``Console.Write( countNodes(head));``}``}` `// This code is contributed by Arnab Kundu`

## Javascript

 ``

Output:

`4`

This article is contributed by Rishabh jain. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.