#include<stdio.h> #include<stdlib.h> struct node { int data; struct node* next; }; struct node *head1 = NULL, *head2 =NULL; void reverse(); void main() { int choice; do { printf("\n__MENU__\n1.Enter and Reverse List\n2...EXIT...\n"); printf("\nENTER your choice\n"); scanf("%d",&choice); switch(choice) { case 1:reverse(); break; case 2:printf("~~~~~~~THANK YOU~~~~~~~\n");break; default:printf("INVALID input !!!");break; } }while(choice!=2); } void reverse() { struct node *temp1,*temp2,*newnode1,*newnode2; int n,x,i; printf("\nEnter no. of elements in the list\n"); scanf("%d",&n); printf("enter %d elements\n",n); for(i=0;i<n;i++) { scanf("%d",&x); newnode1=(struct node*)malloc(sizeof(struct node*)); newnode2=(struct node*)malloc(sizeof(struct node*)); newnode1->data=x; newnode2->data=x; temp1=head1;temp2=head2; if(head1==NULL) { head1=newnode1; newnode1->next=NULL; } else { while(temp1->next!=NULL) temp1=temp1->next; temp1->next=newnode1; newnode1->next=NULL; } if(head2==NULL) { head2=newnode2; newnode2->next=NULL; } else { newnode2->next=temp2; head2=newnode2; } } temp1=head1;temp2=head2; printf("\nLIST elements are\t"); while(temp1!=NULL) { printf("%d\t",temp1->data); temp1=temp1->next; } printf("\n\nReversed order\t\t"); while(temp2!=NULL) { printf("%d\t",temp2->data); temp2=temp2->next; } head1=NULL; head2=NULL; }
Labels: Data Structure in C, Single Linked List