# Sum of the nodes of a Circular Linked List

• Difficulty Level : Easy
• Last Updated : 27 May, 2021

Given a singly Circular linked list. The task is to find the sum of nodes of the given linked list. Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

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   ```

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`

## Javascript

 ``
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