Problem Description
Input
Output
Example Input
12 56 4 6 55 15 33 62 -1 
Example Output
62 33 15 55 6 4 56 12
 
 
 
 
 
 
 #include <stdio.h>
 #include <stdlib.h>
 struct node
 {
     int data;
     struct node *next;
 }*head,*p;
 int main()
 {
   int i,j=0;
   head=(struct node *)malloc(sizeof(struct node));
   head->next=NULL;
   while(j!=-1)
   {
       p=(struct node *)malloc(sizeof(struct node));
       p->next=NULL;
       scanf("%d",&p->data);
       if(p->data==-1)
         break;
       p->next=head->next;
       head->next=p;
   }
   p=head->next;
   while(p!=NULL)
   {
       if(p->next!=NULL)
         printf("%d ",p->data);
       else
         printf("%d\n",p->data);
       p=p->next;
   }
     return 0;
 }
 
 
 
 
 
 
 
 
 
 #include <stdio.h>
 #include <stdlib.h>
 struct node
 {
     int data;
     struct node *next;
 }*p,*q,*head,*tail;
 void print(struct node *head)
 {  // struct node *p;
     p=head->next;
     while(p!=NULL)
     {
         if(p->next!=NULL)
             printf("%d ",p->data);
         else
             printf("%d\n",p->data);
         p=p->next;
     }
 }
 struct node *create()
 {
   //  struct node *tail,*head,*p;
     int d;
     head=(struct node *)malloc(sizeof(struct node));
     head->next=NULL;
     tail=head;
    while(~scanf("%d",&d)&&(d!=-1))
     {
         p=(struct node *)malloc(sizeof(struct node));
         p->next=NULL;
        p->data=d;
         tail->next=p;
         tail=p;
     }
     return head;
 }
 void reverse(struct node *head)
 {
     //struct node *p,*q;
     p=head->next;
     head->next=NULL;
     q=p->next;
     while(p!=NULL)
     {
         p->next=head->next;
         head->next=p;
         p=q;
         if(q) q=q->next;
     }
 }
 int main()
 {
 
 
    struct node *h;
    h=create();
    reverse(h);
    print(h);
     return 0;
 }