Problem:-
You are given a linked list that contains integers. You have performed the following reverse operation on the list:
- Select all the subparts of the list that contain only even integers. For example, if the list is , then the selected subparts will be , .
- Reverse the selected subpart such as and .
Now, you are required to retrieve the original list.
Note: You should use the following definition of the linked list for this problem:
class Node {
Object data;
Node next;
}
Input format
- First line:
- Next line: space-separated integers that denote elements of the reverse list
Output format
Print the elements of the original list.
Constraints
Time Limit: 1
Memory Limit: 256
Source Limit:
Explanation
In the sample, the original list is which when reversed according to the operations will result in the list given in the sample input.
Solution:-
#include<stdio.h>
void main()
{
int n,j,i,k;
long int a[1000],b[1000];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%ld",&a[i]);
}
for(i=0;i<n;i++)
{
if(a[i]%2!=0)
printf("%ld ",a[i]);
else
{
j=0;
while(1)
{
b[j]=a[i];
j++;
i++;
if(a[i]%2!=0||i==n)
break;
}
for(k=j-1;k>=0;k--)
printf("%ld ",b[k]);
i--;
}
}
}
0 Comments