SIMPLE AND BASIC OPERATIONS ON DOUBLY LINKED LIST
DOUBLY LINKED LIST
In This Post I'm Going To Demonstrate you Simple Operations On Doubly Linked List i.e.
(1) Addition Of Nodes
(2) Deletion Of Nodes
(3) Traversing The List In LIFO and FIFO Fashion
(4) Search A Data from List
THE CODE IS AS FOLLOWING :-
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct ll
{
struct ll *prev;
int digit;
struct ll *next;
}mynode;
mynode *start,*head,*new1,*prev;
void addnode(mynode **hd , int data);
void delnode(mynode **hd , int data);
void traverseLIFO(mynode *hd);
void traverseFIFO(mynode *hd);
void searchnode(mynode *hd,int data);
void main()
{
int choice,data;
head=(mynode*)malloc(sizeof(mynode));
head->next=head->prev=NULL;
clrscr();
while(1)
{
printf("\n1.ADD NODE");
printf("\n2.DELETE NODE");
printf("\n3.TRAVERSE FIFO");
printf("\n4.TRAVERSE LIFO");
printf("\n5.SEARCH NODE");
printf("\n6.EXIT");
printf("\nENTER CHOICE : ");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("\nENTER DATA : ");
scanf("%d",&data);
addnode(&head,data);
break;
case 2:
printf("\nENTER DATA TO DELETE : ");
scanf("%d",&data);
delnode(&head,data);
break;
case 3:
traverseFIFO(head);
break;
case 4:
traverseLIFO(head);
break;
case 5:
printf("\nENTER DATA TO BE SEARCHED : ");
scanf("%d",&data);
searchnode(head,data);
break;
case 6:
printf("\nTHANKS FOR USING ME , GOOD BYE %c !!",1);
getch();
exit(0);
break;
default:
printf("\nINVALID CHOICE RE-ENTER : ");
break;
}//switch
}//while
}
void addnode(mynode **hd,int data)
{
clrscr();
start=*hd;
new1=(mynode*)malloc(sizeof(mynode));
new1->next=new1->prev=NULL;
new1->digit=data;
if(start->next==NULL)
{
start->next=new1;
new1->prev=start;
printf("\nFIRST DATA %d IS ADDED",data);
return;
}
while(start->next!=NULL)
start=start->next;
start->next=new1;
new1->prev=start;
printf("\n%d IS ADDED",data);
}
void delnode(mynode **hd,int data)
{
clrscr();
prev=start=*hd;
if(start->next==NULL)
{
printf("\nNOTHING TO DELETE");
return;
}
if(start->next->next==NULL)
{
if(start->next->digit==data)
{
start=start->next;
free(start);
prev->next=NULL;
printf("\nWARNING : FIRST NODE %d IS DELETED",data);
return;
}
else
{
printf("\nDATA %d IS NOT FOUND ON SINGLE NODE",data);
return;
}
}
while(start->next!=NULL)
{
start=start->next;
if(start->digit==data)
{
prev->next=start->next;
start->next->prev=prev;
free(start);
printf("\n%d IS DELETED !!",data);
return;
}
else
prev=prev->next;
}
printf("\n%d DATA IS NOT FOUND",data);
}
void traverseLIFO(mynode *hd)
{
clrscr();
start=hd;
if(start->next==NULL)
{
printf("\nNOTHING FOUND LIST IS EMPTY");
return;
}
printf("\nFOLLOWING DATA ARE FOUND : ");
while(start->next!=NULL)
start=start->next;
while(start->prev!=NULL)
{
printf("%d,",start->digit);
start=start->prev;
}
}
void traverseFIFO(mynode *hd)
{
clrscr();
start=hd;
if(start->next==NULL)
{
printf("\nNOTHING FOUND LIST IS EMPTY");
return;
}
printf("\nFOLLOWING DATA ARE FOUND : ");
while(start->next!=NULL)
{
start=start->next;
printf("%d,",start->digit);
}
}
void searchnode(mynode *hd,int data)
{
start=hd;
clrscr();
while(start->next!=NULL)
{
start=start->next;
if(start->digit==data)
{
printf("\nDATA %d IS FOUND",data);
return;
}
}
printf("\nDATA %d IS NOT FOUND",data);
}
#include<conio.h>
#include<stdlib.h>
typedef struct ll
{
struct ll *prev;
int digit;
struct ll *next;
}mynode;
mynode *start,*head,*new1,*prev;
void addnode(mynode **hd , int data);
void delnode(mynode **hd , int data);
void traverseLIFO(mynode *hd);
void traverseFIFO(mynode *hd);
void searchnode(mynode *hd,int data);
void main()
{
int choice,data;
head=(mynode*)malloc(sizeof(mynode));
head->next=head->prev=NULL;
clrscr();
while(1)
{
printf("\n1.ADD NODE");
printf("\n2.DELETE NODE");
printf("\n3.TRAVERSE FIFO");
printf("\n4.TRAVERSE LIFO");
printf("\n5.SEARCH NODE");
printf("\n6.EXIT");
printf("\nENTER CHOICE : ");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("\nENTER DATA : ");
scanf("%d",&data);
addnode(&head,data);
break;
case 2:
printf("\nENTER DATA TO DELETE : ");
scanf("%d",&data);
delnode(&head,data);
break;
case 3:
traverseFIFO(head);
break;
case 4:
traverseLIFO(head);
break;
case 5:
printf("\nENTER DATA TO BE SEARCHED : ");
scanf("%d",&data);
searchnode(head,data);
break;
case 6:
printf("\nTHANKS FOR USING ME , GOOD BYE %c !!",1);
getch();
exit(0);
break;
default:
printf("\nINVALID CHOICE RE-ENTER : ");
break;
}//switch
}//while
}
void addnode(mynode **hd,int data)
{
clrscr();
start=*hd;
new1=(mynode*)malloc(sizeof(mynode));
new1->next=new1->prev=NULL;
new1->digit=data;
if(start->next==NULL)
{
start->next=new1;
new1->prev=start;
printf("\nFIRST DATA %d IS ADDED",data);
return;
}
while(start->next!=NULL)
start=start->next;
start->next=new1;
new1->prev=start;
printf("\n%d IS ADDED",data);
}
void delnode(mynode **hd,int data)
{
clrscr();
prev=start=*hd;
if(start->next==NULL)
{
printf("\nNOTHING TO DELETE");
return;
}
if(start->next->next==NULL)
{
if(start->next->digit==data)
{
start=start->next;
free(start);
prev->next=NULL;
printf("\nWARNING : FIRST NODE %d IS DELETED",data);
return;
}
else
{
printf("\nDATA %d IS NOT FOUND ON SINGLE NODE",data);
return;
}
}
while(start->next!=NULL)
{
start=start->next;
if(start->digit==data)
{
prev->next=start->next;
start->next->prev=prev;
free(start);
printf("\n%d IS DELETED !!",data);
return;
}
else
prev=prev->next;
}
printf("\n%d DATA IS NOT FOUND",data);
}
void traverseLIFO(mynode *hd)
{
clrscr();
start=hd;
if(start->next==NULL)
{
printf("\nNOTHING FOUND LIST IS EMPTY");
return;
}
printf("\nFOLLOWING DATA ARE FOUND : ");
while(start->next!=NULL)
start=start->next;
while(start->prev!=NULL)
{
printf("%d,",start->digit);
start=start->prev;
}
}
void traverseFIFO(mynode *hd)
{
clrscr();
start=hd;
if(start->next==NULL)
{
printf("\nNOTHING FOUND LIST IS EMPTY");
return;
}
printf("\nFOLLOWING DATA ARE FOUND : ");
while(start->next!=NULL)
{
start=start->next;
printf("%d,",start->digit);
}
}
void searchnode(mynode *hd,int data)
{
start=hd;
clrscr();
while(start->next!=NULL)
{
start=start->next;
if(start->digit==data)
{
printf("\nDATA %d IS FOUND",data);
return;
}
}
printf("\nDATA %d IS NOT FOUND",data);
}
Comments
Post a Comment