# Sum of the nodes of a Circular Linked List

Given a singly Circular linked list. The task is to find the sum of nodes of the given linked list. For the above circular list, sum = 2 + 5 + 7 + 8 + 10 = 32

Examples:

```Input: 11->2->56->12
Output: Sum of Circular linked list is = 81

Input: 2-> 5 -> 7 -> 8 -> 10
Output: Sum of Circular linked list is = 32
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

1. Initialize a pointer temp with the head of the linked list and a sum variable with 0.
2. Start traversing the linked list using a loop until all the nodes get traversed.

• Add the value of current node to the sum i.e. sum += temp -> data.
• Increment the pointer to the next node of linked list i.e. temp = temp -> next.
3. Return the sum.

Below is the implementation of the above approach:

## C++

 `// CPP program to find the sum of all nodes ` `// of a Circular linked list ` ` `  `#include ` `using` `namespace` `std; ` ` `  `// Structure for a node ` `struct` `Node { ` `    ``int` `data; ` `    ``struct` `Node* next; ` `}; ` ` `  `// Function to insert a node at the beginning ` `// of a Circular linked list ` `void` `push(``struct` `Node** head_ref, ``int` `data) ` `{ ` `    ``struct` `Node* ptr1 = (``struct` `Node*)``malloc``(``sizeof``(``struct` `Node)); ` `    ``struct` `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; ` `} ` ` `  `// Function to find sum of the given ` `// Circular linked list ` `int` `sumOfList(``struct` `Node* head) ` `{ ` `    ``struct` `Node* temp = head; ` `    ``int` `sum = 0; ` `    ``if` `(head != NULL) { ` `        ``do` `{ ` `            ``temp = temp->next; ` `            ``sum += temp->data; ` `        ``} ``while` `(temp != head); ` `    ``} ` ` `  `    ``return` `sum; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``// Initialize lists as empty ` `    ``struct` `Node* head = NULL; ` ` `  `    ``// Created linked list will be 11->2->56->12 ` `    ``push(&head, 12); ` `    ``push(&head, 56); ` `    ``push(&head, 2); ` `    ``push(&head, 11); ` ` `  `    ``cout << ``"Sum of Circular linked list is = "` `<< sumOfList(head); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java program to find the sum of ` `// all nodes of a Circular linked list  ` `import` `java.util.*; ` ` `  `class` `GFG ` `{ ` ` `  `// structure 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 find sum of the  ` `// given Circular linked list  ` `static` `int` `sumOfList(Node head)  ` `{  ` `    ``Node temp = head;  ` `    ``int` `sum = ``0``;  ` `    ``if` `(head != ``null``)  ` `    ``{  ` `        ``do`  `        ``{  ` `            ``temp = temp.next;  ` `            ``sum += temp.data;  ` `        ``} ``while` `(temp != head);  ` `    ``}  ` ` `  `    ``return` `sum;  ` `}  ` ` `  `// Driver code  ` `public` `static` `void` `main(String args[]) ` `{  ` `    ``// Initialize lists as empty  ` `    ``Node head = ``null``;  ` ` `  `    ``// Created linked list will ` `    ``// be 11.2.56.12  ` `    ``head = push(head, ``12``);  ` `    ``head = push(head, ``56``);  ` `    ``head = push(head, ``2``);  ` `    ``head = push(head, ``11``);  ` ` `  `    ``System.out.println(``"Sum of Circular linked"` `+  ` `                ``" list is = "` `+ sumOfList(head));  ` `}  ` `} ` ` `  `// This code is contributed by Arnab Kundu `

## Python3

 `# Python3 program to find the sum of all nodes  ` `# of a Circular linked list  ` `import` `math ` ` `  `# class 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, data): ` `    ``if` `not` `head: ` `        ``head ``=` `Node(data) ` `        ``head.``next` `=` `head ` `        ``return` `head ` `    ``lnode ``=` `head ` ` `  `    ``# If linked list is not NULL then  ` `    ``# set the next of last node  ` `    ``while``(lnode ``and` `lnode.``next` `is` `not` `head): ` `        ``lnode ``=` `lnode.``next` `    ``ptr1 ``=` `Node(data) ``# For the first node ` `    ``ptr1.``next` `=` `head ` `    ``lnode.``next` `=` `ptr1 ` `    ``head ``=` `ptr1 ` `    ``return` `head ` ` `  `# Function to find sum of the given  ` `# Circular linked list      ` `def` `sumOfList(head): ` `    ``temp ``=` `head ` `    ``tsum ``=` `temp.data ` `    ``temp ``=` `temp.``next` `    ``while``(temp ``is` `not` `head): ` `        ``tsum ``+``=` `temp.data ` `        ``temp ``=` `temp.``next` `    ``return` `tsum ` ` `  `# Driver code  ` `if` `__name__``=``=``'__main__'``: ` `     `  `    ``# Initialize lists as empty ` `    ``head ``=` `None` ` `  `    ``# Created linked list will be 11->2->56->12  ` `    ``head ``=` `push(head, ``12``) ` `    ``head ``=` `push(head, ``56``) ` `    ``head ``=` `push(head, ``2``) ` `    ``head ``=` `push(head, ``11``) ` `    ``print``(``"Sum of circular list is = {}"` `.  ` `                  ``format``(sumOfList(head))) ` ` `  `# This code is contributed by Vikash Kumar 37 `

## C#

 `// C# program to find the sum of  ` `// all nodes of a Circular linked list  ` `using` `System; ` ` `  `class` `GFG  ` `{  ` ` `  `    ``// structure for a node  ` `    ``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 find sum of the  ` `    ``// given Circular linked list  ` `    ``static` `int` `sumOfList(Node head)  ` `    ``{  ` `        ``Node temp = head;  ` `        ``int` `sum = 0;  ` `        ``if` `(head != ``null``)  ` `        ``{  ` `            ``do` `            ``{  ` `                ``temp = temp.next;  ` `                ``sum += temp.data;  ` `            ``} ``while` `(temp != head);  ` `        ``}  ` ` `  `        ``return` `sum;  ` `    ``}  ` ` `  `    ``// Driver code  ` `    ``public` `static` `void` `Main()  ` `    ``{  ` `        ``// Initialize lists as empty  ` `        ``Node head = ``null``;  ` ` `  `        ``// Created linked list will  ` `        ``// be 11.2.56.12  ` `        ``head = push(head, 12);  ` `        ``head = push(head, 56);  ` `        ``head = push(head, 2);  ` `        ``head = push(head, 11);  ` ` `  `        ``Console.WriteLine(``"Sum of Circular linked"` `+  ` `                    ``" list is = "` `+ sumOfList(head));  ` `    ``}  ` `} ` ` `  `// This code is contributed by princiraj1992 `

Output:

```Sum of Circular linked list is = 81
```

Time Complexity: O(N) where N is the number of nodes in the linked list.
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up Strategy Path planning and Destination matters in success No need to worry about in between temporary failures

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.