# Find sum of even and odd nodes in a linked list

• Difficulty Level : Easy
• Last Updated : 07 Jun, 2021

Given a linked list, the task is to find the sum of even and odd nodes in it separately.
Examples:

Input: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7
Output:
Even Sum = 12
Odd Sum = 16
Input: 5 -> 7 -> 8 -> 10 -> 15
Output:
Even Sum = 18
Odd Sum = 27

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.

Approach: Traverse the whole linked list and for each node:-

1. If the element is even then we add that element to the variable which is holding the sum of even elements.
2. If the element is odd then we add that element to the variable which is holding the sum of odd elements.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;` `// Represents node of the linked list``struct` `Node {``    ``int` `data;``    ``Node* next;``};` `// Function to insert a node at the``// end of the linked list``void` `insert(Node** root, ``int` `item)``{``    ``Node *ptr = *root, *temp = ``new` `Node;``    ``temp->data = item;``    ``temp->next = NULL;` `    ``if` `(*root == NULL)``        ``*root = temp;``    ``else` `{``        ``while` `(ptr->next != NULL)``            ``ptr = ptr->next;``        ``ptr->next = temp;``    ``}``}` `// Function to print the sum of even``// and odd nodes of the linked lists``void` `evenOdd(Node* root)``{``    ``int` `odd = 0, even = 0;``    ``Node* ptr = root;``    ``while` `(ptr != NULL) {` `        ``// If current node's data is even``        ``if` `(ptr->data % 2 == 0)``            ``even += ptr->data;` `        ``// If current node's data is odd``        ``else``            ``odd += ptr->data;` `        ``// ptr now points to the next node``        ``ptr = ptr->next;``    ``}` `    ``cout << ``"Even Sum = "` `<< even << endl;``    ``cout << ``"Odd Sum = "` `<< odd << endl;``}` `// Driver code``int` `main()``{``    ``Node* root = NULL;``    ``insert(&root, 1);``    ``insert(&root, 2);``    ``insert(&root, 3);``    ``insert(&root, 4);``    ``insert(&root, 5);``    ``insert(&root, 6);``    ``insert(&root, 7);` `    ``evenOdd(root);` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach``class` `GfG``{` `// Represents node of the linked list``static` `class` `Node``{``    ``int` `data;``    ``Node next;``}``static` `Node root;` `// Function to insert a node at the``// end of the linked list``static` `void` `insert(``int` `item)``{``    ``Node ptr = root, temp = ``new` `Node();``    ``temp.data = item;``    ``temp.next = ``null``;` `    ``if` `(root == ``null``)``        ``root = temp;``    ``else``    ``{``        ``while` `(ptr.next != ``null``)``            ``ptr = ptr.next;``        ``ptr.next = temp;``    ``}``}` `// Function to print the sum of even``// and odd nodes of the linked lists``static` `void` `evenOdd(Node root)``{``    ``int` `odd = ``0``, even = ``0``;``    ``Node ptr = root;``    ``while` `(ptr != ``null``)``    ``{` `        ``// If current node's data is even``        ``if` `(ptr.data % ``2` `== ``0``)``            ``even += ptr.data;` `        ``// If current node's data is odd``        ``else``            ``odd += ptr.data;` `        ``// ptr now points to the next node``        ``ptr = ptr.next;``    ``}` `    ``System.out.println(``"Even Sum = "` `+ even);``    ``System.out.println(``"Odd Sum = "` `+ odd);``}` `// Driver code``public` `static` `void` `main(String[] args)``{``    ``// Node* root = NULL;``    ``insert( ``1``);``    ``insert( ``2``);``    ``insert( ``3``);``    ``insert( ``4``);``    ``insert(``5``);``    ``insert(``6``);``    ``insert( ``7``);` `    ``evenOdd(root);``}``}` `// This code is contributed by Prerna Saini`

## Python3

 `# Python3 implementation of the approach``import` `math` `# Represents node of the linked list``class` `Node:``    ``def` `__init__(``self``, data):``        ``self``.data ``=` `data``        ``self``.``next` `=` `None` `# Function to insert a node at the``# end of the linked list``def` `insert(root, item):``    ``ptr ``=` `root``    ``temp ``=` `Node(item)``    ``temp.data ``=` `item``    ``temp.``next` `=` `None` `    ``if` `(root ``=``=` `None``):``        ``root ``=` `temp``    ``else``:``        ``while` `(ptr.``next` `!``=` `None``):``            ``ptr ``=` `ptr.``next``        ``ptr.``next` `=` `temp``    ` `    ``return` `root` `# Function to print the sum of even``# and odd nodes of the linked lists``def` `evenOdd(root):``    ``odd ``=` `0``    ``even ``=` `0``    ``ptr ``=` `root``    ``while` `(ptr !``=` `None``):` `        ``# If current node's data is even``        ``if` `(ptr.data ``%` `2` `=``=` `0``):``            ``even ``=` `even ``+` `ptr.data` `        ``# If current node's data is odd``        ``else``:``            ``odd ``=` `odd ``+` `ptr.data` `        ``# ptr now points to the next node``        ``ptr ``=` `ptr.``next``    ` `    ``print``( ``"Even Sum = "``, even)``    ``print``( ``"Odd Sum = "``, odd)` `# Driver code``if` `__name__``=``=``'__main__'``:``    ``root ``=` `None``    ``root ``=` `insert(root, ``1``)``    ``root ``=` `insert(root, ``2``)``    ``root ``=` `insert(root, ``3``)``    ``root ``=` `insert(root, ``4``)``    ``root ``=` `insert(root, ``5``)``    ``root ``=` `insert(root, ``6``)``    ``root ``=` `insert(root, ``7``)` `    ``evenOdd(root)` `# This code is contributed by AbhiThakur`

## C#

 `// C# implementation of the approach``using` `System;` `class` `GfG``{` `// Represents node of the linked list``public` `class` `Node``{``    ``public` `int` `data;``    ``public` `Node next;``}``static` `Node root;` `// Function to insert a node at the``// end of the linked list``static` `void` `insert(``int` `item)``{``    ``Node ptr = root, temp = ``new` `Node();``    ``temp.data = item;``    ``temp.next = ``null``;` `    ``if` `(root == ``null``)``        ``root = temp;``    ``else``    ``{``        ``while` `(ptr.next != ``null``)``            ``ptr = ptr.next;``        ``ptr.next = temp;``    ``}``}` `// Function to print the sum of even``// and odd nodes of the linked lists``static` `void` `evenOdd(Node root)``{``    ``int` `odd = 0, even = 0;``    ``Node ptr = root;``    ``while` `(ptr != ``null``)``    ``{` `        ``// If current node's data is even``        ``if` `(ptr.data % 2 == 0)``            ``even += ptr.data;` `        ``// If current node's data is odd``        ``else``            ``odd += ptr.data;` `        ``// ptr now points to the next node``        ``ptr = ptr.next;``    ``}` `    ``Console.WriteLine(``"Even Sum = "` `+ even);``    ``Console.WriteLine(``"Odd Sum = "` `+ odd);``}` `// Driver code``public` `static` `void` `Main(String []args)``{``    ``// Node* root = NULL;``    ``insert( 1);``    ``insert( 2);``    ``insert( 3);``    ``insert( 4);``    ``insert(5);``    ``insert(6);``    ``insert( 7);` `    ``evenOdd(root);``}``}` `// This code is contributed by Arnab Kundu`

## Javascript

 ``
Output:
```Even Sum = 12
Odd Sum = 16```

My Personal Notes arrow_drop_up