Delete an element from a circular linked list Csll
#include<stdio.h>
struct node
{
int data;
struct node *link;
}*header, *new ,*ptr,*ptr1;
void create();
void traverse();
void delete();
int main()
{
int ch;
clrscr();
header->link=header;
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);
new->data=x;
new->link=header->link;
header->link=new;
}
void traverse()
{
if (header->link==header)
{
printf("\n Link is Empty");
exit(0);
}
else
{
printf("\n Data Parts Of Linked List is :");
ptr=header;
while(ptr->link!=header)
{
ptr=ptr->link;
printf("-> %d",ptr->data);
}
}
}
void delete()
{
int key,pos;
if(header->link==header)
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->link;
header->link=ptr->link;
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->link!=header)
{
ptr1=ptr;
ptr=ptr->link;
}
if(ptr->link==header)
{
if(ptr->data==key)
{
ptr1->link=header;
printf("\n Deleted Node is %d",ptr->data);
free(ptr);
}
else
printf("\n Key Not Found");
}
else
{
ptr1->link=ptr->link;
printf("\n %d is Deleted",ptr->data);
free(ptr);
}
}
else if(pos==3)
{
ptr=header;
while(ptr->link!=header)
{
ptr1=ptr;
ptr=ptr->link;
}
ptr1->link=header;
printf("\n Deleted Node is %d",ptr->data);
free(ptr);
}
}
}
Comments
Post a Comment