#include<stdio.h>
#include<stdlib.h>
struct node {
int data;
struct node *next;
struct node *prev;
};
struct node *insert(struct node * head,int data){
printf("Entered insert\n");
struct node *newNode = (struct node *)malloc(sizeof(struct node));
struct node *temp = NULL;
temp = head;
newNode->data = data;
newNode->prev = NULL;
newNode->next = NULL;
printf("Node Allocated\n");
if(head==NULL){
printf("Entered if loop\n\n");
head = newNode;
printf("inside head insertion");
return head;
}
printf("above while loop \n");
while(temp->next!=NULL){
temp=temp->next;
}
newNode->prev=temp;
temp->next=newNode;
return head;
}
void print(struct node *head){
printf("Entered inside print function\n\n");
struct node *temp = head;
while(temp != NULL){
printf("%d\n",temp->data);
temp=temp->next;
}
}
struct node *reverse(struct node *head){
struct node *temp = NULL;
struct node *current = head;
while (current != NULL)
{
temp = current->prev;
current->prev = current->next;
current->next = temp;
current = current->prev;
}
if(temp != NULL )
head = temp->prev;
return head;
}
int main()
{
struct node *head=NULL;
int i=0;
int num =0;
printf("Enter 10 numbers to insert into Doubly Linkedlist\n");
for(i=0;i<10;i++){
scanf("%d",&num);
head =insert(head,num);
printf("inserted the %d number , head -> data = %d",i,head->data);
}
printf("Linked List before Reverse\n");
print(head);
head=reverse(head);
printf("Linked List after Reverse\n");
print(head);
return 0;
}
Sunday, 13 December 2015
Reverse elements of a Doubly LinkedList in C
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment