Circular Linked List Lab program
#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *link;
};
struct node *root=NULL;
void create()
{
struct node *second,*third,*fourth,*fifth;
clrscr();
root=malloc(sizeof(struct node));
second=malloc(sizeof(struct node));
third=malloc(sizeof(struct node));
fourth=malloc(sizeof(struct node));
fifth=malloc(sizeof(struct node));
root->data=10;
second->data=20;
third->data=30;
fourth->data=40;
fifth->data=50;
root->link=second;
second->link=third;
third->link=fourth;
fourth->link=fifth;
fifth->link=root
;
}
void addFirst(int val)
{
struct node *temp=malloc(sizeof(struct node));
temp->data=val;
if(root==NULL)
{
temp->link=temp;
root=temp;
}
else
{
struct node *p;
p=root;
while(p->link!=root)
{
p=p->link;
}
p->link=temp;
temp->link=root;
root=temp;
}
}
void addEnd(int val)
{
struct node *temp=malloc(sizeof(struct node));
temp->data=val;
if(root==NULL)
{
temp->link=temp;
root=temp;
}
else
{
struct node *p;
p=root;
while(p->link!=root)
{
p=p->link;
}
p->link=temp;
temp->link=root;
}
}
void addposition(int val)
{
int pos,i=1;
struct node *temp,*p;
temp=malloc(sizeof(struct node));
temp->data=val;
temp->link=NULL;
printf("enter the position");
scanf("%d",&pos);
p=root;
while(i<pos)
{
p=p->link;
i++;
}
temp->link=p->link;
p->link=temp;
}
void deleteBEP(int val)
{
struct node *p,*temp;
temp=root;
if(temp->data==val)
{
p=root;
while(p->link!=root)
{
p=p->link;
}
root=root->link;
p->link=root;
free(temp);
}
else
{
p=root;
while(p->link!=root)
{
if(p->link->data==val)
{
temp=p->link;
p->link=temp->link;
free(temp);
break;
}
else
{
p=p->link;
}
}
}
}
int search(int key)
{
struct node *temp;
temp=root;
while(temp!=root)
{
if(temp->data==key)
return 1;
temp=temp->link;
}
return -1;
}
void display()
{
struct node *temp;
temp=root;
do
{
printf("%d--",temp->data);
temp=temp->link;
}while(temp!=root);
}
void main()
{
int op,val,x;
create();
while(1)
{
printf("\n linked list menu\n");
printf("1.insert at begin\n");
printf("2.insert at end\n");
printf("3.insert at pos\n");
printf("4.delete at beg,end,pos\n");
printf("5.search\n");
printf("6.display\n");
printf("7.exit\n");
printf("choose one option\n");
scanf("%d",&op);
switch(op)
{
case 1:printf("\n enter a value");
scanf("%d",&val);
addFirst(val);
break;
case 2:printf("\n enter a value:");
scanf("%d",&val);
addEnd(val);
break;
case 3:printf("\n enter a value:");
scanf("%d",&val);
addposition(val);
break;
case 4:printf("\n enter a value:");
scanf("%d",&val);
deleteBEP(val);
break;
case 5:printf("\n enter a value:");
scanf("%d",&val);
x=search(val);
if(x==1)
printf("\n element found");
else
printf("\n element not found");
break;
case 6:
display();
break;
case 7:
exit(1);
break;
default:
printf("choose valid option\n");
}
}
}
Comments
Post a Comment