Program to find average of all nodes in a Linked List

29 Oct, 2021
Given a singly linked list. The task is to find the average of all nodes of the given singly linked list.Examples:  
Input: 7->6->8->4->1
Output: 26
Average of nodes:
(7 + 6 + 8 + 4 + 1 ) / 5 = 5.2

Input: 1->7->3->9->11->5
Output: 6
 
Iterative Solution:  
Initialise a pointer ptr with the head of the linked list and a sum variable with 0.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 += ptr -> data .Increment the pointer to the next node of linked list i.e. ptr = ptr ->next .Divide sum by total number of node and Return the average.
Initialise a pointer ptr with the head of the linked list and a sum variable with 0.
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 += ptr -> data .
Increment the pointer to the next node of linked list i.e. ptr = ptr ->next .
Divide sum by total number of node and Return the average.
Below is the implementation of the above approach: 
C++
Java
Python3
C#
Javascript
// C++ implementation to find the average of// nodes of the Linked List  #include <bits/stdc++.h>using namespace std;  /* A Linked list node */struct Node {    int data;    struct Node* next;};  // function to insert a node at the// beginning of the linked listvoid push(struct Node** head_ref, int new_data){    /* allocate node */    struct Node* new_node = new Node;      /* put in the data */    new_node->data = new_data;      /* link the old list to the new node */    new_node->next = (*head_ref);      /* move the head to point to the new node */    (*head_ref) = new_node;}  // Function to iteratively find the avg of// nodes of the given linked listfloat avgOfNodes(struct Node* head){    // if head = NULL    if (!head)        return -1;      int count = 0; // Initialize count    int sum = 0;    float avg = 0.0;      struct Node* current = head; // Initialize current    while (current != NULL) {        count++;        sum += current->data;        current = current->next;    }      // calculate average    avg = (double)sum / count;      return avg;}  // Driver Codeint main(){    struct Node* head = NULL;      // create linked list 7->6->8->4->1    push(&head, 7);    push(&head, 6);    push(&head, 8);    push(&head, 4);    push(&head, 1);      cout << "Average of nodes = " << avgOfNodes(head);      return 0;}
// Java implementation to find the average of// nodes of the Linked Listclass GFG{       /* A Linked list node */static class Node {    int data;    Node next;};  // function to insert a node at the// beginning of the linked liststatic Node push(Node head_ref, int new_data){    /* allocate node */    Node new_node = new Node();      /* put in the data */    new_node.data = new_data;      /* link the old list to the new node */    new_node.next = (head_ref);      /* move the head to point to the new node */    (head_ref) = new_node;    return head_ref;}  // Function to iteratively find the avg of// nodes of the given linked liststatic double avgOfNodes(Node head){    // if head = null    if (head == null)        return -1;      int count = 0; // Initialize count    int sum = 0;    double avg = 0.0;      Node current = head; // Initialize current    while (current != null)    {        count++;        sum += current.data;        current = current.next;    }      // calculate average    avg = (double)sum / count;      return avg;}  // Driver Codepublic static void main(String args[]){    Node head = null;      // create linked list 7.6.8.4.1    head=push(head, 7);    head=push(head, 6);    head=push(head, 8);    head=push(head, 4);    head=push(head, 1);      System.out.println("Average of nodes = " + avgOfNodes(head));}}// This code is contributed by Arnab Kundu
# Python3 implementation to find the average of # nodes of the Linked List class newNode:       # Constructor to create a new node     def __init__(self, data):         self.data = data         self.next = None  # function to insert a node at the # beginning of the linked list def push(node,data):          ''' allocate node '''    if (node == None):         return (newNode(data))           else:        node.next = push(node.next, data)         return node   # Function to iteratively find the avg of # nodes of the given linked list def avgOfNodes(head):          # if head = NULL     if (head == None):        return -1          count = 0 # Initialize count     sum = 0    avg = 0.0      while (head != None):        count += 1        sum += head.data         head = head.next          # calculate average     avg = sum / count     return avg   # Driver Code   # create linked list 7.6.8.4.1 head = newNode(7) push(head, 6) push(head, 8) push(head, 4) push(head, 1) print("Average of nodes = ",avgOfNodes(head))  # This code is contributed by# Shubham Singh(SHUBHAMSINGH10) 
// C# implementation to find the average // of nodes of the Linked List using System;  class GFG {       /* A Linked list node */public class Node {     public int data;     public Node next; };   // function to insert a node at the // beginning of the linked list static Node push(Node head_ref,                  int new_data) {     /* allocate node */    Node new_node = new Node();       /* put in the data */    new_node.data = new_data;       /* link the old list to the new node */    new_node.next = (head_ref);       /* move the head to point to the new node */    (head_ref) = new_node;     return head_ref; }   // Function to iteratively find the avg of // nodes of the given linked list static double avgOfNodes(Node head) {     // if head = null     if (head == null)         return -1;       int count = 0; // Initialize count     int sum = 0;     double avg = 0.0;       Node current = head; // Initialize current     while (current != null)     {         count++;         sum += current.data;         current = current.next;     }       // calculate average     avg = (double)sum / count;       return avg; }   // Driver Code public static void Main(String []args) {     Node head = null;       // create linked list 7.6.8.4.1     head=push(head, 7);     head=push(head, 6);     head=push(head, 8);     head=push(head, 4);     head=push(head, 1);       Console.WriteLine("Average of nodes = " +                            avgOfNodes(head)); } }   // This code is contributed by Rajput-Ji
<script>// javascript implementation to find the average of// nodes of the Linked List    /* A Linked list node */class Node {    constructor(val) {        this.data = val;        this.next = null;    }}      // function to insert a node at the    // beginning of the linked list    function push(head_ref , new_data) {        /* allocate node */var new_node = new Node();          /* put in the data */        new_node.data = new_data;          /* link the old list to the new node */        new_node.next = (head_ref);          /* move the head to point to the new node */        (head_ref) = new_node;        return head_ref;    }      // Function to iteratively find the avg of    // nodes of the given linked list    function avgOfNodes(head) {        // if head = null        if (head == null)            return -1;          var count = 0; // Initialize count        var sum = 0;        var avg = 0.0;  var current = head; // Initialize current        while (current != null) {            count++;            sum += current.data;            current = current.next;        }          // calculate average        avg =  sum / count;          return avg;    }      // Driver Code      var head = null;          // create linked list 7.6.8.4.1        head = push(head, 7);        head = push(head, 6);        head = push(head, 8);        head = push(head, 4);        head = push(head, 1);          document.write("Average of nodes = " + avgOfNodes(head));  // This code contributed by aashish1995</script>
Average of nodes = 5.2
 
Time complexity : O(n) Where n is equal to number of nodes. 
VishalBachchas
andrew1234
Rajput-Ji
SHUBHAMSINGH10
aashish1995
simranarora5sos
maths-mean
Technical Scripter 2018
Linked List
Technical Scripter
Linked List
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Introduction to Data Structures
What is Data Structure: Types, Classifications and Applications
Types of Linked List
Circular Singly Linked List | Insertion
Find first node of loop in a linked list
Add two numbers represented by linked lists | Set 2
Flattening a Linked List
Real-time application of Data Structures
Insert a node at a specific position in a linked list
Clone a linked list with next and random pointer | Set 1