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);

}

Comments

Popular posts from this blog

Program To Evaluate Square Root Of A Number

TIC-TAC-TOE THROUGH C

LINKED LIST IMPLEMENTATION FOR GAME BATTLESHIP THROUGH C