Deletion of DLL
#include<stdio.h>
struct node
{
int data;
struct node *llink,*rlink;
}*header, *new ,*ptr,*ptr1,*ptr2;
void create();
void traverse();
void delete();
int main()
{
int ch;
clrscr();
header->rlink=NULL;
while(1)
{
printf("\n Enter your Choice\n 1.Create\n 2.Delete\n 3.Traverse\n 4.Exit\n");
scanf("%d",&ch);
switch (ch)
{
case 1: create();
break;
case 2: delete();
break;
case 3:traverse();
break;
default:exit(0);
}
}
return 0;
}
void create()
{
int x;
new=(struct node *)malloc(sizeof(struct node));
if (new==NULL)
{
printf("\n No Space");
exit(0);
}
printf("\n Enter data to insert:");
scanf("%d",&x);
ptr=header->rlink;
new->data=x;
new->llink=header;
header->rlink=new;
new->rlink=ptr;
if(ptr!=NULL)
ptr->llink=new;
}
void traverse()
{
if (header->rlink==NULL)
{
printf("\n Link is Empty");
exit(0);
}
else
{
printf("\n Data Parts Of Linked List is :");
ptr=header;
while(ptr->rlink!=NULL)
{
ptr=ptr->rlink;
printf("-> %d",ptr->data);
}
}
}
void delete()
{
int key,pos;
if(header->rlink==NULL)
printf("\n Link is Empty");
else
{
printf("\n Enter Position To Insert\n 1.Deletion At Front\n 2.Deletion At Any\n 3.Deletion At End");
scanf("%d",&pos);
if (pos==1)
{
ptr=header->rlink;
ptr1=ptr->rlink;
header->rlink=ptr1;
// if(ptr1=NULL)
printf("\n Deleted Node is:%d",ptr->data);
free(ptr);
}
else if(pos==2)
{
int key;
printf("\n Enter Key To Delete:");
scanf("%d",&key);
ptr=header;
while(ptr->data!=key && ptr->rlink!=NULL)
{
ptr=ptr->rlink;
}
if(ptr->rlink==NULL)
{
if(ptr->data==key)
{
ptr1=ptr->llink;
ptr1->rlink=NULL;
printf("\n Deleted Node is %d",ptr->data);
free(ptr);
}
else
printf("\n Key Not Found");
}
else
{
ptr1=ptr->llink;
ptr2=ptr->rlink;
ptr1->rlink=ptr2;
ptr2->llink=ptr;
printf("\n %d is Deleted",ptr->data);
free(ptr);
}
}
else if(pos==3)
{
ptr=header;
while(ptr->rlink!=NULL);
ptr=ptr->rlink;
ptr1=ptr->llink;
ptr1->rlink=NULL;
printf("\n Deleted Node is %d",ptr->data);
free(ptr);
}
}
}
Comments
Post a Comment