Reverse_linkedlist

·

1 min read

/******************************************************************************

Welcome to GDB Online.
  GDB online is an online compiler and debugger tool for C, C++, Python, PHP, Ruby, 
  C#, OCaml, VB, Perl, Swift, Prolog, Javascript, Pascal, COBOL, HTML, CSS, JS
  Code, Compile, Run and Debug online from anywhere in world.

*******************************************************************************/
#include <stdio.h>
#include<stdlib.h>

struct Node {
    int data;
    struct Node* next;
};

struct Node* head;
void Print(){
    Node* temp = head;
    while(temp != NULL){
        printf("%d ",temp->data);
        temp = temp->next;
    }
    printf("\n");
}

void Insert(int data,int n){
    Node* temp1 = new Node();

    temp1->data = data;
    temp1->next = NULL;

    if (n==1){
        temp1->next = head;
        head = temp1;
        return;
    }

    Node* temp2 = head;
    for(int i=0;i<n-2;i++){
        temp2 = temp2->next;
    }

    temp1->next = temp2->next;
    temp2->next = temp1;
}

void Delete(int n){
    Node* temp1 = head;

    if(n==1){
        head = temp1->next;
        free(temp1);
    }
    for(int i=0;i<n-2;i++){
        temp1 = temp1->next;
    }

    Node* temp2 = temp1->next;

    temp1->next = temp2->next;

    free(temp2);//delete temp2;

}

void Reverse(){
    struct Node *current,*prev,*next;
    current = head;
    prev = NULL;

    while(current!=NULL){
        next = current->next;
        current->next = prev;
        prev = current;
         current = next;
        }
    // temp1->next = temp2;
    head = prev;
}

int main()
{
   head = NULL; //empty list
   Insert(2,1);
   Insert(3,2);
   Insert(4,1);
   Insert(5,2);
   Print();

//   Delete(3);
    Reverse();
  Print();
    return 0;
}