Tuesday 19 May 2015

C program to simulate the working of circular link list (operations 1.insert 2.delete front 3.delete end 4.delete given elemet 5.delete every alternate 6.display)



#include<stdio.h>
struct node
{
int data;
struct node *next;
};
typedef struct node *NODE;
NODE insert_front(NODE last)
{
printf("----INSERT FRONT-----\n");
NODE temp;
int item;

temp=(NODE)malloc(sizeof(struct node));

printf("Enter the data to insert front:");
scanf("%d",&item);
temp->data=item;
if(last==NULL)
last=temp;
else
temp->next=last->next;
last->next=temp;
return(last);
}
NODE delete_front(NODE last)
{
printf("----DELETE FRONT-----\n");
NODE temp;
if(last==NULL)
{
printf("List is empty!!\n");
return(last);
}
if(last->next==last)
{
free(last);
return(NULL);
}
temp=last->next;
last->next=temp->next;

printf("You have deleted %d",temp->data);
free(temp);
return(last);
}
NODE delete_rear(NODE last)
{
printf("----DELETE REAR-----\n");
NODE temp,pre;
if(last==NULL)
{
printf("List is empty!!\n");
return(last);
}
if(last->next==last)
{
free(last);
return(NULL);
}
pre=last->next;
while(pre->next!=last)
pre=pre->next;
pre->next=last->next;
printf("You have deleted %d",last->data);
free(last);
return(pre);
}
NODE delete_alternate(NODE last)
{
printf("----DELETE ALTERNATE-----\n");
NODE temp,first,cur;
first=cur=last->next;
while(first->next!=last && first->next!=cur)
{
temp=first->next;
first->next=temp->next;
printf("You have deleted %d\t",temp->data);
printf("\n");
free(temp);
first=first->next;
}
if(first->next==last)
{
printf("You have deleted %d\t",last->data);
printf("\n");
first->next=last->next;
free(last);
}
return(first);
}
NODE delete_key(NODE last)
{
printf("----DELETE GIVEN ELEMENT-----\n");
NODE first,cur,pre;
int key;
printf("Enter the key to delete:");
scanf("%d",&key);
if(last==NULL)
{
printf("List is empty!!\n");
return(last);
}
first=cur=last->next;
pre=last;
while(cur!=last)
{
if(cur->data==key)
break;
pre=cur;
cur=cur->next;
}
if(cur->data!=key)
{
printf("KEy not found!!\n");
return(last);
}
pre->next=cur->next;
free(cur);
if(pre->next==first)
return(pre);
else
return(last);
}
NODE display(NODE last)
{
NODE cur;
if(last==NULL)
{
printf("List is empty!!\n");
return(last);
}
cur=last->next;
while(cur!=last)
{
printf("%d\t",cur->data);
cur=cur->next;
}
printf("%d\t",last->data);
printf("\n");
return(last);
}
main()
{
NODE last=NULL;
int opt;
while(1)
{
printf("--------MENU-------------\n");
printf("1>Insert front\n 2>Delete front\n 3>Delete rear\n 4>Delete given element\n 5>Delete every alternate element\n 6>Dispaly\n 7>Exit\n");
printf("Enter your option:");
scanf("%d",&opt);
switch(opt)
{
case 1:last=insert_front(last);
break;
case 2:last=delete_front(last);
break;
case 3:last=delete_rear(last);
break;
case 4:last=delete_key(last);
break;
case 5:last=delete_alternate(last);
break;
case 6:display(last);
break;
case 7:exit(0);
default:printf("Invalid option!!Retry\n");
}
}
}

No comments:

Post a Comment