Reversed Linked List

 Problem:-

You are given a linked list that contains 

N

 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 
    {1,2,8,9,12,16}

    , then the selected subparts will be 

    {2,8}

    {12,16}

    .

  • Reverse the selected subpart such as 
    {8,2}

     and 

    {16,12}

    .

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: 
    N

     

  • Next line: 
    N

     space-separated integers that denote elements of the reverse list

Output format

Print the 

N

 elements of the original list.

Constraints

1N103


1Ai109

Sample Input
9
2 18 24 3 5 7 9 6 12
Sample Output
24 18 2 3 5 7 9 12 6
Time Limit: 1
Memory Limit: 256
Source Limit:
Explanation

In the sample, the original list is 

{24,18,2,3,5,7,9,12,6}

 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=j1;k>=0;k–)
       printf(“%ld “,b[k]);
      i–;
    }
  }
}



Leave a Reply

Your email address will not be published.