Exp 17.1 DSA
Exp 17.1 DSA
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct node
{ int num; //Data.
struct node *back; //Pointer To Previous Node.
struct node *forw; //Pointer To Next Node.
};
void main()
{
int ele,ch=0,ch1,temp;
struct node *First,*Last,*This,*Temp,*Temp2;
First=Last=This=Temp=Temp2=NULL;
printf("Experiment 17 : This Is A Program To Perform Insertion, Deletion &
Traversal In A Double Linked List.");
while (ch!=4) //Menu.
{ printf("\nPress 1->Insert, 2->Delete, 3->Display or 4->Exit.");
printf("\nEnter Your Choice : ");
scanf("%d",&ch);
switch(ch)
{ case 1: //Inserting Element.
{ if(First!=NULL)
{ printf("\nEnter Your Choice,Where Do You Wish To Insert The
Element :");
printf("\n1. At The Beginning.");
printf("\n2. After A Particular Element.");
printf("\n3. At The End.\n");
scanf("%d",&ch1);
}
else
ch1=1;
switch(ch1)
{ case 1: //At The Beginning.
{ Temp=(struct node *)malloc(sizeof(struct node *));
printf("\nEnter The Element To Be Inserted : ");
scanf("%d",&ele);
Temp->num=ele;
Temp->back=NULL;
Temp->forw=NULL;
if(First==NULL)
First=Last=Temp;
else
{ Temp->forw=First;
First->back=Temp;
First=First->back;
}
printf("\n\t\t! Element Inserted Successfully!");
break;
}
case 2: //After A Particular Element.
{ printf("\nEnter The Element After Which The Element
Has To Be Inserted : ");
scanf("%d",&temp);
This=First;
while (This->num!=temp && This!=NULL)
This=This->forw;
if( This==NULL ) //Checking If Element Exists.
printf("\n\t\tThe Element Does Not Exists In The
Existing Linked List.");
else //Inserting Node At Required Location.
{ printf("\nEnter The Element To Be Inserted :
");
scanf("%d",&ele);
Temp=(struct node *)malloc(sizeof(struct node
*));
Temp->num=ele;
Temp->back=Temp->forw=NULL;
Temp2=This->forw;
Temp->forw=Temp2;
Temp->back=This;
This->forw=Temp;
if(Last==This)
Last=Temp;
else
Temp2->back=Temp;
printf("\n\t\t! Element Inserted
Successfully !");
}
break;
}
case 3: //At The End.
{ printf("\nEnter The Element To Be Inserted : ");
scanf("%d",&ele);
Temp=(struct node *)malloc(sizeof(struct node*));
Temp->num=ele;
Temp->back=NULL;
Temp->forw=NULL;
Temp->back=Last;
Last->forw=Temp;
Last=Temp;
printf("\n\t\t! Element Inserted Successfully !");
break;
}
}
break;
}
case 4: //Exit.
break;