Assume you have a linked list
Input - 1->4->5->6
Output - 6->5->4->1
In Input head points to a node whose value is 1 and the address node which contains 6 point to NULL.
In Output things are just reversed head point to node whose value is 6 and node which has value 1 points to NULL.
Input - 1->4->5->6
Output - 6->5->4->1
In Input head points to a node whose value is 1 and the address node which contains 6 point to NULL.
In Output things are just reversed head point to node whose value is 6 and node which has value 1 points to NULL.
Algorithm to Reverse a Linked List
1. First we need to traverse a linked list.
2. Reverse a links means the address node points to next node to prev, prev to current and current to next.
Program to Reverse a Linked List
#include <stdio.h>
struct node{
int data;
struct node* next;
};
struct node* head;
void insert_node(int data){
struct node* newnode=(struct node*)malloc(sizeof(struct node*));
newnode->data = data;
newnode->next = head;
head = newnode;
}
void reverse_node(){
struct node *prev,*next,*current;
current = head;
while(current!=NULL){
next = current->next;
current->next = prev;
prev = current;
current=next;
}
head = prev;
}
void print(){
struct node* p;
p = head;
while(p!=NULL){
printf("%d\n",p->data);
p=p->next;
}
printf("\n");
}
Void main()
{
head = NULL;
insert_node(6); insert_node(5); insert_node(4); insert_node(1); print(); reverse_node(); print(); }
Problem on Linked List
Best Books on Data Structures
Data Structure Books Available on Flipkart
Data Structure Books Available on Amazon India
Data Structure Books on Amazon

No comments:
Post a Comment