Skip to content
Related Articles

Related Articles

Improve Article

Sum and Product of all the nodes which are less than K in the linked list

  • Last Updated : 12 Jul, 2021

Given a Linked List and a key K. The task is to calculate the sum and product all the nodes from the list that are lesser than the key K.
Examples: 
 

Input: 12 -> 15 -> 9 -> 11 -> 5 -> 6, K = 9 
Output: Sum = 11, Product = 30
Input: 13 -> 4 -> 16 -> 9 -> 22 -> 45 -> 5 -> 16 -> 6, K = 10 
Output: Sum = 24, Product = 1080 
 

 

Approach: Start traversing from the head and check if current node’s value is less than K. If yes, then add that node to the sum and multiply that node for the product and move forward in the list.
Below is the implementation of the above approach: 
 

C++




// C++ program to sum and product all the
// nodes from the list that are lesser
// than the specified value K
#include <bits/stdc++.h>
using namespace std;
 
// structure of a node
struct Node {
    int data;
    Node* next;
};
 
// function to get a new node
Node* getNode(int data)
{
    Node* newNode = new Node;
    newNode->data = data;
    newNode->next = NULL;
    return newNode;
}
 
// function to sum all the nodes from the list
// that are lesser than the specified value K
int sumLesserNodes(Node** head_ref, int K)
{
    Node* temp = *head_ref;
 
    int sum = 0;
    while (temp != NULL) {
        if (temp->data < K)
            sum += temp->data;
        temp = temp->next;
    }
 
    return sum;
}
 
// function to product all the nodes from the list
// that are lesser than the specified value K
int productLesserNodes(Node** head_ref, int K)
{
    Node* temp = *head_ref;
 
    int product = 1;
    while (temp != NULL) {
        if (temp->data < K)
            product *= temp->data;
        temp = temp->next;
    }
 
    return product;
}
 
// Driver code
int main()
{
    // Create list: 12->15->9->11->5->6
    Node* head = getNode(12);
    head->next = getNode(15);
    head->next->next = getNode(9);
    head->next->next->next = getNode(11);
    head->next->next->next->next = getNode(5);
    head->next->next->next->next->next = getNode(6);
 
    int K = 9;
    cout << "Sum = " << sumLesserNodes(&head, K) << endl;
    cout << "Product = " << productLesserNodes(&head, K) << endl;
 
    return 0;
}

Java




// Java program to sum and product all the
// nodes from the list that are lesser
// than the specified value K
class GFG
{
 
// structure of a node
static class Node
{
    int data;
    Node next;
};
 
// function to get a new node
static Node getNode(int data)
{
    Node newNode = new Node();
    newNode.data = data;
    newNode.next = null;
    return newNode;
}
 
// function to sum all the nodes from the list
// that are lesser than the specified value K
static int sumLesserNodes(Node head_ref, int K)
{
    Node temp = head_ref;
 
    int sum = 0;
    while (temp != null)
    {
        if (temp.data < K)
            sum += temp.data;
        temp = temp.next;
    }
 
    return sum;
}
 
// function to product all the nodes from the list
// that are lesser than the specified value K
static int productLesserNodes(Node head_ref, int K)
{
    Node temp = head_ref;
 
    int product = 1;
    while (temp != null)
    {
        if (temp.data < K)
            product *= temp.data;
        temp = temp.next;
    }
 
    return product;
}
 
// Driver code
public static void main(String[] args)
{
 
    // Create list: 12->15->9->11->5->6
    Node head = getNode(12);
    head.next = getNode(15);
    head.next.next = getNode(9);
    head.next.next.next = getNode(11);
    head.next.next.next.next = getNode(5);
    head.next.next.next.next.next = getNode(6);
 
    int K = 9;
    System.out.println("Sum = " + sumLesserNodes(head, K));
    System.out.println("Product = " + productLesserNodes(head, K));
}
}
 
// This code has been contributed by 29AjayKumar

Python3




# Python3 program to sum and product all the
# nodes from the list that are lesser
# than the specified value K
 
# Node of the single linked list
class Node:
     
    def __init__(self, data):
        self.data = data
        self.next = None
 
# function to get a new node
def getNode(data):
 
    newNode = Node(0)
    newNode.data = data
    newNode.next = None
    return newNode
 
# function to sum all the nodes from the list
# that are lesser than the specified value K
def sumLesserNodes(head_ref, K):
 
    temp = head_ref
 
    sum = 0
    while (temp != None) :
        if (temp.data < K):
            sum += temp.data
        temp = temp.next
     
    return sum
 
# function to product all the nodes from the list
# that are lesser than the specified value K
def productLesserNodes(head_ref,K):
 
    temp = head_ref
 
    product = 1
    while (temp != None) :
        if (temp.data < K):
            product *= temp.data
        temp = temp.next
     
    return product
 
# Driver Code
if __name__ == "__main__":
 
    # Create list: 12.15.9.11.5.6
    head = getNode(12)
    head.next = getNode(15)
    head.next.next = getNode(9)
    head.next.next.next = getNode(11)
    head.next.next.next.next = getNode(5)
    head.next.next.next.next.next = getNode(6)
 
    K = 9
    print("Sum =", sumLesserNodes(head, K))
    print("Product =", productLesserNodes(head, K))
 
# This code is contributed by Arnab Kundu

C#




// C# program to sum and product all the
// nodes from the list that are lesser
// than the specified value K
using System;
     
class GFG
{
 
// structure of a node
public class Node
{
    public int data;
    public Node next;
};
 
// function to get a new node
static Node getNode(int data)
{
    Node newNode = new Node();
    newNode.data = data;
    newNode.next = null;
    return newNode;
}
 
// function to sum all the nodes from the list
// that are lesser than the specified value K
static int sumLesserNodes(Node head_ref, int K)
{
    Node temp = head_ref;
 
    int sum = 0;
    while (temp != null)
    {
        if (temp.data < K)
            sum += temp.data;
        temp = temp.next;
    }
 
    return sum;
}
 
// function to product all the nodes from the list
// that are lesser than the specified value K
static int productLesserNodes(Node head_ref, int K)
{
    Node temp = head_ref;
 
    int product = 1;
    while (temp != null)
    {
        if (temp.data < K)
            product *= temp.data;
        temp = temp.next;
    }
 
    return product;
}
 
// Driver code
public static void Main(String[] args)
{
 
    // Create list: 12->15->9->11->5->6
    Node head = getNode(12);
    head.next = getNode(15);
    head.next.next = getNode(9);
    head.next.next.next = getNode(11);
    head.next.next.next.next = getNode(5);
    head.next.next.next.next.next = getNode(6);
 
    int K = 9;
    Console.WriteLine("Sum = " + sumLesserNodes(head, K));
    Console.WriteLine("Product = " + productLesserNodes(head, K));
}
}
 
// This code contributed by Rajput-Ji

Javascript




<script>
 
// JavaScript program to sum and product all the
// nodes from the list that are lesser
// than the specified value K
 
class Node
{
    constructor()
    {
        this.data=0;
        this.next=null;
    }
}
 
// function to get a new node
function getNode(data)
{   
    let newNode = new Node();
    newNode.data = data;
    newNode.next = null;
    return newNode;
}
 
// function to sum all the nodes from the list
// that are lesser than the specified value K
function sumLesserNodes(head_ref,K)
{
    let temp = head_ref;
   
    let sum = 0;
    while (temp != null)
    {
        if (temp.data < K)
            sum += temp.data;
        temp = temp.next;
    }
   
    return sum;
}
 
// function to product all the nodes from the list
// that are lesser than the specified value K
function productLesserNodes(head_ref,K)
{
    let temp = head_ref;
   
    let product = 1;
    while (temp != null)
    {
        if (temp.data < K)
            product *= temp.data;
        temp = temp.next;
    }
   
    return product;
}
 
// Driver code
// Create list: 12->15->9->11->5->6
let head = getNode(12);
head.next = getNode(15);
head.next.next = getNode(9);
head.next.next.next = getNode(11);
head.next.next.next.next = getNode(5);
head.next.next.next.next.next = getNode(6);
 
let K = 9;
document.write("Sum = " + sumLesserNodes(head, K)+"<br>");
document.write("Product = " + productLesserNodes(head, K)+"<br>");
 
 
// This code is contributed by avanitrachhadiya2155
 
</script>
Output: 



Sum = 11
Product = 30

 

Time Complexity: O(N)
 

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.




My Personal Notes arrow_drop_up
Recommended Articles
Page :