# Product of the alternate nodes of linked list

Given with n nodes the task is to print the product of alternate node in a linked list. The program must only print the product of alternate nodes without actually changing the locations of the nodes.

## Example

Input -: 10 20 30 40 50 60
Output -: 15000

In the above example, starting from first node which is 10 alternate nodes are 10, 30, 50 and their product is 10*30*50 = 15000.

In the above diagram, blue coloured nodes are the alternate nodes, if we start from first node and red coloured nodes are non considerable nodes.

## Approach used below is as follows

• Take a temporary pointer, lets say, temp of type node

• Set this temp pointer to first node which is pointed by head pointer

• Move temp to temp ->next -> next while the situation (temp->next!=NULL && temp!=NULL && temp->next->next!=NULL) holds true

• Set product=product*(temp->data)

## Algorithm

Start
Step 1 -> create structure of a node and temp, next and head as pointer to a structure node
struct node
int data
End
Step 2 -> declare function to insert a node in a list
void insert(int val)
struct node* newnode = (struct node*)malloc(sizeof(struct node))
newnode->data = val
End
Else
Loop While temp->next!=NULL
Set temp=temp->next
End
Set newnode->next=NULL
Set temp->next=newnode
End
Step 3 -> Declare a function to display list
void display()
Print no node
End
Else
Loop While temp!=NULL
Print temp->data
Set temp=temp->next
End
End
Step 4 -> declare a function to find alternate nodes
void alternate()
declare int product
Loop While(temp->next!=NULL && temp!=NULL && temp->next-
>next!=NULL)
Set temp=temp->next->next
Set product=product * (temp->data)
End
Print product
Step 5 -> in main()
Create nodes using struct node* head = NULL;
Call function insert(10) to insert a node
Call display() to display the list
Call alternate() to find alternate nodes product
Stop

## CODE

Live Demo

#include<stdio.h>
#include<stdlib.h>
//structure of a node
struct node {
int data;
struct node *next;
//function for inserting nodes into a list
void insert(int val) {
struct node* newnode = (struct node*)malloc(sizeof(struct node));
newnode->data = val;
} else {
while(temp->next!=NULL) {
temp=temp->next;
}
newnode->next=NULL;
temp->next=newnode;
}
}
//function for displaying a list
void display() {
printf("no node ");
else {
while(temp!=NULL) {
printf("%d ",temp->data);
temp=temp->next;
}
}
}
//function for finding alternate elements
void alternate() {
int product;
while(temp->next!=NULL && temp!=NULL && temp->next->next!=NULL) {
temp=temp->next->next;
product=product * (temp->data);
}
printf("product of alternate nodes is %d : " ,product);
}
int main() {
//creating list
//inserting elements into a list
insert(10);
insert(20);
insert(30);
insert(40);
insert(50);
insert(60);
//displaying the list
display();

//calling alternate function for finding product
alternate();
return 0;
}

## Output

linked list is : 10 20 30 40 50 60
product of alternate nodes is : 15000

Updated on: 20-Sep-2019

118 Views