traverse() function are used to get all data from the doubly linked list.
rtraverse() function are used to get all data from the doubly linked list in reverse direction.
We traverse linked list in reverse direction by recursion
program-
#include< stdio.h>
#include< conio.h>
#include< alloc.h>
struct node{
struct node *pre;
struct node *next;
int data;
};
struct node *first=NULL,*last=NULL;
void rtraverse()
{
struct node *ptr=last;
while(ptr!=NULL)
{
printf("%d ",ptr->data);
ptr=ptr->pre;
}
}
void traverse()
{
struct node *ptr;
ptr=first;
while(ptr!=NULL){
printf("%d ",ptr->data);
ptr=ptr->next;
}
}
void main()
{
struct node *cpt,*ptr;
char ch;
clrscr();
first=(struct node*)malloc(sizeof(struct node));
printf("Enter first element in Linklist\n");
scanf("%d",&first->data);
first->pre=NULL;
ptr=first;
do
{
cpt=(struct node*)malloc(sizeof(struct node));
printf("Enter another data\n");
scanf("%d",&cpt->data);
ptr->next=cpt;
cpt->pre=ptr;
ptr=ptr->next;
printf("Continue(y/n) ?");
ch=getch();
}while(ch=='y');
ptr->next=NULL;
last=ptr;
printf("\nDoubly Linked-list is\n");
traverse();
printf("\nIn Reverse order\n");
rtraverse();
getch();
}
Enter first element in Linklist
4
Enter another data
5
Continue(y/n)?
Enter another data
1
Continue(y/n)?
Enter another data
9
Continue(y/n)?
Enter another data
0
Continue(y/n)?
Doubly Linked-List is
4 5 1 9 0
In Reverse order
0 9 1 5 4