LinkedList Reversal

Algorithm

INPUT: HEADER IS A POINTER TO THE HEADER NODE OF THE LINKEDLIST
OUTPUT: REVERSAL LINKEDLIST
DATA STRUCTURE: SINGLY LINKEDLIST

STEP 1: START
STEP 2: Q=HEADER->LINK
STEP 3: R=NULL,S=NULL
STEP 4: WHILE(Q!=NULL)
STEP 5: S=Q->LINK
STEP 6: Q->LINK=R
STEP 7: R=Q
STEP 8: Q=S
STEP 9: ENDWHILE
STEP 10: END

Code

 #include <stdio.h>
 #include <stdlib.h>
 int getnode(int);void display();
 struct node* reverse();int x,pos,n;struct node{int data;
 struct node *link;};
 struct node *prev,*head,*news,*p,*ptr;
 struct node* q1;
 struct node *header;
 struct node *q,*r,*s;
 int main(){
 printf("ENTER THE LIMIT");
 scanf("%d",&n);
 getnode(n);
 return 0;}
 void display(struct node *head1){
 struct node *ptr;
 ptr=head1->link;
 while(ptr!=NULL){
 printf("%d ",ptr->data);
 ptr=ptr->link;}}
 struct node* reverse(){
    q=header->link;
    r=NULL,s=NULL;
    while(q!=NULL){
        s=q->link;
        q->link=r;    
        r=q;
        // q->link=r;
        q=s;  }
    q=r;
    return q;}
 int getnode(int n){  
header=malloc(sizeof(struct node));
 head=NULL;
 for(int i=0;i<n;i++){
 p=malloc(sizeof(struct node));
 q1=malloc(sizeof(struct node));
 q=NULL;
 scanf("%d",&p->data);
 p->link=NULL;
 if(head==NULL)
 head=p;
 else
 prev->link=p;
 prev=p;
 }header->link=head;
 display(header);
 reverse();
 q1->link=q;
 printf("Thee reverse linkedlist is ");
 display(q1);
 return 0;
 }

Output

user@computer$ : ENTER THE LIMIT3
1
2
3
1 2 3 Thee reverse linkedlist is 3 2 1

Leave a Comment

Your email address will not be published. Required fields are marked *