# Find the product of first k nodes of the given Linked List

• Last Updated : 22 Nov, 2021

Given a pointer to the head of a singly linked list and an integer k. The task is to find the product of the first k nodes of the linked list.

Examples:

Input: 10 -> 6 -> 8 -> 4 -> 12, k = 2
Output: 60
10 * 6 = 60

Input: 15 -> 7 -> 9 -> 5 -> 16 -> 14, k = 4
Output: 4725
15 * 7 * 9 * 5 = 4725

Approach: Set prod = 1 (required product) and count = 0 (count of nodes traversed). Now, start traversing the nodes of the linked list from left to right and update count = count + 1 and prod = prod * currNode -> data with every traversed node while count < k. Print the value of the prod in the end.

Below is the implementation of the above approach:

## C++

 `// C++ program to find the product of first` `// 'k' nodes of the Linked List` `#include ` `using` `namespace` `std;` `#define ll long long int`   `/* A Linked list node */` `struct` `Node {` `    ``int` `data;` `    ``struct` `Node* next;` `};`   `// Function to insert a node at the` `// beginning of the linked list` `void` `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 return the product of` `// first k nodes of the given linked list` `ll product(``struct` `Node* head, ``int` `k)` `{` `    ``if` `(k <= 0)` `        ``return` `0;`   `    ``ll prod = 1;` `    ``int` `i = 0;` `    ``Node* node = head;`   `    ``// Traverse the list from left to right` `    ``while` `(i < k) {`   `        ``// Update product` `        ``prod = prod * node->data;`   `        ``// Move to the next node` `        ``node = node->next;` `        ``i++;` `    ``}`   `    ``// Return the required product` `    ``return` `prod;` `}`   `// Driver code` `int` `main()` `{` `    ``struct` `Node* head = NULL;`   `    ``// Linked list 10 -> 6 -> 8 -> 4 -> 12` `    ``push(&head, 12);` `    ``push(&head, 4);` `    ``push(&head, 8);` `    ``push(&head, 6);` `    ``push(&head, 10);`   `    ``int` `k = 2;` `    ``cout << product(head, k);` `    ``return` `0;` `}`

## Java

 `// Java program to find the product of first` `// 'k' nodes of the Linked List` `class` `Solution` `{`   `/* A Linked list node */` `static` `class` `Node` `{` `    ``int` `data;` `    ``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 return the product of` `// first k nodes of the given linked list` `static` `long` `product( Node head, ``int` `k)` `{` `    ``if` `(k <= ``0``)` `        ``return` `0``;`   `    ``long` `prod = ``1``;` `    ``int` `i = ``0``;` `    ``Node node = head;`   `    ``// Traverse the list from left to right` `    ``while` `(i < k)` `    ``{`   `        ``// Update product` `        ``prod = prod * node.data;`   `        ``// Move to the next node` `        ``node = node.next;` `        ``i++;` `    ``}`   `    ``// Return the required product` `    ``return` `prod;` `}`   `// Driver code` `public` `static` `void` `main(String args[])` `{` `    ``Node head = ``new` `Node();`   `    ``// Linked list 10 . 6 . 8 . 4 . 12` `    ``head=push(head, ``12``);` `    ``head=push(head, ``4``);` `    ``head=push(head, ``8``);` `    ``head=push(head, ``6``);` `    ``head=push(head, ``10``);`   `    ``int` `k = ``2``;` `    ``System.out.println( product(head, k));` `    `  `}` `}`   `// This code is contributed by Arnab Kundu`

## Python3

 `    `  `# Python3 program to find the product ` `# of first 'k' nodes of the Linked List` `import` `math`   `#define ll long long `   `# A Linked list node ` `class` `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(head_ref, new_data):` `    `  `    ``# allocate node ` `    ``new_node ``=` `Node(new_data)`   `    ``# 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 po to the new node ` `    ``head_ref ``=` `new_node` `    ``return` `head_ref`   `# Function to return the product of` `# first k nodes of the given linked list` `def` `product(head, k):` `    ``if` `(k <``=` `0``):` `        ``return` `0`   `    ``prod ``=` `1` `    ``i ``=` `0` `    ``node ``=` `head`   `    ``# Traverse the list from left to right` `    ``while` `(i < k):`   `        ``# Update product` `        ``prod ``=` `prod ``*` `node.data`   `        ``# Move to the next node` `        ``node ``=` `node.``next` `        ``i ``=` `i ``+` `1` `    `  `    ``# Return the required product` `    ``return` `prod`   `# Driver code` `if` `__name__``=``=``'__main__'``:` `    ``head ``=` `None`   `    ``# Linked list 10 . 6 . 8 . 4 . 12` `    ``head ``=` `push(head, ``12``);` `    ``head ``=` `push(head, ``4``);` `    ``head ``=` `push(head, ``8``);` `    ``head ``=` `push(head, ``6``);` `    ``head ``=` `push(head, ``10``);`   `    ``k ``=` `2` `    ``print``(product(head, k))` `    `  `# This code is contributed by Srathore`

## C#

 `// C# program to find the product of first` `// 'k' nodes of the Linked List` `using` `System;`   `class` `GFG` `{`   `/* A Linked list node */` `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 return the product of` `// first k nodes of the given linked list` `static` `long` `product( Node head, ``int` `k)` `{` `    ``if` `(k <= 0)` `        ``return` `0;`   `    ``long` `prod = 1;` `    ``int` `i = 0;` `    ``Node node = head;`   `    ``// Traverse the list from left to right` `    ``while` `(i < k)` `    ``{`   `        ``// Update product` `        ``prod = prod * node.data;`   `        ``// Move to the next node` `        ``node = node.next;` `        ``i++;` `    ``}`   `    ``// Return the required product` `    ``return` `prod;` `}`   `// Driver code` `public` `static` `void` `Main()` `{` `    ``Node head = ``new` `Node();`   `    ``// Linked list 10 . 6 . 8 . 4 . 12` `    ``head=push(head, 12);` `    ``head=push(head, 4);` `    ``head=push(head, 8);` `    ``head=push(head, 6);` `    ``head=push(head, 10);`   `    ``int` `k = 2;` `    ``Console.WriteLine( product(head, k));` `}` `}`   `// This code is contributed by PrinciRaj1992`

## Javascript

 ``

Output:

`60`

My Personal Notes arrow_drop_up
Recommended Articles
Page :