📜  链表中所有小于K的节点的Sum和Product

📅  最后修改于: 2022-05-13 01:57:05.312000             🧑  作者: Mango

链表中所有小于K的节点的Sum和Product

给定一个链表和一个键 K。任务是计算列表中小于键 K 的所有节点的总和和乘积。
例子:

方法:从头部开始遍历并检查当前节点的值是否小于K。如果是,则将该节点添加到总和中并乘以该节点为产品并在列表中向前移动。
下面是上述方法的实现:

C++
// C++ program to sum and product all the
// nodes from the list that are lesser
// than the specified value K
#include 
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


输出:
Sum = 11
Product = 30

时间复杂度: O(N)