Count nodes in Circular linked list - GeeksforGeeks

27 Oct, 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++
Java
Python3
C#
Javascript
//  c++  program to count number of nodes in// a circular linked list.#include <bits/stdc++.h>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 beginningof 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 Circularlinked 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 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 beginningof 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 Circularlinked 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 program to count number of nodes in# a circular linked list. # structure for a nodeclass 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 listdef countNodes(head):     temp = head    result = 0    if (head != None) :        while True :            temp = temp.next            result = result + 1            if (temp == head):                break         return result # Driver Codeif __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# 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 beginningof 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 Circularlinked 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
<script>// javascript program to count number of nodes in// a circular linked list.     /* ure for a node */class Node {    constructor() {        this.data = 0;        this.next = null;    }}    /*     * Function to insert a node at the beginning of a Circular linked list     */    function push(head_ref , data) {    var ptr1 = new Node();    var 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     */    function countNodes(head) {    var temp = head;        var result = 0;        if (head != null) {            do {                temp = temp.next;                result++;            } while (temp != head);        }         return result;    }     /* Driver program to test above functions */             /* Initialize lists as empty */        var head = null;        head = push(head, 12);        head = push(head, 56);        head = push(head, 2);        head = push(head, 11);         document.write(countNodes(head)); // This code contributed by umadevi9616</script>
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.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
andrew1234
Akanksha_Rai
umadevi9616
anushikasethh
ankita_saini
circular linked list
Linked List
Linked List
circular linked list
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Linked List | Set 1 (Introduction)
Linked List | Set 2 (Inserting a node)
Stack Data Structure (Introduction and Program)
Linked List | Set 3 (Deleting a node)
LinkedList in Java
Linked List vs Array
Detect loop in a linked list
Delete a Linked List node at a given position
Merge two sorted linked lists
Find the middle of a given linked list