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