//Implementation of Circular List
#include<conio.h>
#include<iostream>
#include<malloc.h>
using namespace std;
void creation();
void traversing();
void addatbeg();
void addafter(int, int);
void deletion(int);
struct node{
int info;
node *link;
}*last;
int n;
int main()
{
last = NULL;
int ch;
while(1)
{
cout<<"1.Creation";
cout<<endl;
cout<<"2.Traversing";
cout<<endl;
cout<<"3.Insertion at start";
cout<<endl;
cout<<"4. Insertion any Where"<<endl;
cout<<"5.Deletion";
cout<<endl;
cout<<"6.exit";
//cout<<endl;
cout<<"Enter Your Choice";
cin>>ch;
switch(ch)
{
case 1:
int n;
cout<<"enter number of nodes";
cin>>n;
for(int i=0;i<n;i++)
creation();
break;
case 2:
traversing();
break;
case 3:
addatbeg();
break;
case 4:
int i;
cout<<"enter Position"<<endl;
cin>>i;
int data;
cout<<"Enter Data"<<endl;
cin>>data;
addafter(data,i);
break;
case 5:
int m;
cout<<"Enter data to be deleted"<<endl;
cin>>m;
deletion(m);
break;
case 6:
exit(0);
default:
cout<<"Sorry!Wrong Choice :(";
cout<<endl;
}}
getch();
return(0);
}
void creation()
{
struct node *temp;
temp=(node*)malloc(sizeof(struct node));
int data;
cout<<"Enter Data ";
cin>>data;
temp->info=data;
cout<<endl;
if(last==NULL)
{
last=temp;
last->link=last;
}
else
{
temp->link=last->link;
last->link=temp;
last=temp;
}
}
void traversing()
{
struct node *q;
q=last->link;
while(q!=last)
{
cout<<"data is "<<q->info;
cout<<endl;
q=q->link;
}
cout<<last->info;
cout<<endl;
}
void addatbeg()
{
int Data,k;
struct node *tmp,*q;
tmp=(node*)malloc(sizeof(struct node));
cout<<"Enter Data";
cin>>Data;
cout<<endl;
tmp->info=Data;
tmp->link=last->link;
last->link=tmp;
}
void addafter(int data, int pos)
{
struct node *q,*tmp;
int i;
q=last->link;
for(i=0;i<pos-1;i++)
{
q=q->link;
if(q==last->link)
{
cout<<"Less Elements "<<endl;
return;
}
}
tmp=(node*)malloc(sizeof(struct node));
tmp->info=data;
tmp->link=q->link;
q->link=tmp;
if(q==last)
{
last=tmp;
}
}
void deletion(int data)
{
// int chh,m,data;
struct node *tmp,*q;
if(last->link==last&&last->info==data)
{
tmp=last;
last=NULL;
free(tmp);
return;
}
q=last->link;
if(q->info==data)
{
tmp=q;
last->link=q->link;
free(tmp);
return;
}
while(q->link!=last)
{
if(q->link->info==data)
{
tmp=q->link;
q->link=tmp->link;
free(tmp);
return;
}
q=q->link;
}
if(q->link->info==data)
{
tmp=q->link;
q->link=last->link;
free(tmp);
last=q;
return;
}
}
#include<conio.h>
#include<iostream>
#include<malloc.h>
using namespace std;
void creation();
void traversing();
void addatbeg();
void addafter(int, int);
void deletion(int);
struct node{
int info;
node *link;
}*last;
int n;
int main()
{
last = NULL;
int ch;
while(1)
{
cout<<"1.Creation";
cout<<endl;
cout<<"2.Traversing";
cout<<endl;
cout<<"3.Insertion at start";
cout<<endl;
cout<<"4. Insertion any Where"<<endl;
cout<<"5.Deletion";
cout<<endl;
cout<<"6.exit";
//cout<<endl;
cout<<"Enter Your Choice";
cin>>ch;
switch(ch)
{
case 1:
int n;
cout<<"enter number of nodes";
cin>>n;
for(int i=0;i<n;i++)
creation();
break;
case 2:
traversing();
break;
case 3:
addatbeg();
break;
case 4:
int i;
cout<<"enter Position"<<endl;
cin>>i;
int data;
cout<<"Enter Data"<<endl;
cin>>data;
addafter(data,i);
break;
case 5:
int m;
cout<<"Enter data to be deleted"<<endl;
cin>>m;
deletion(m);
break;
case 6:
exit(0);
default:
cout<<"Sorry!Wrong Choice :(";
cout<<endl;
}}
getch();
return(0);
}
void creation()
{
struct node *temp;
temp=(node*)malloc(sizeof(struct node));
int data;
cout<<"Enter Data ";
cin>>data;
temp->info=data;
cout<<endl;
if(last==NULL)
{
last=temp;
last->link=last;
}
else
{
temp->link=last->link;
last->link=temp;
last=temp;
}
}
void traversing()
{
struct node *q;
q=last->link;
while(q!=last)
{
cout<<"data is "<<q->info;
cout<<endl;
q=q->link;
}
cout<<last->info;
cout<<endl;
}
void addatbeg()
{
int Data,k;
struct node *tmp,*q;
tmp=(node*)malloc(sizeof(struct node));
cout<<"Enter Data";
cin>>Data;
cout<<endl;
tmp->info=Data;
tmp->link=last->link;
last->link=tmp;
}
void addafter(int data, int pos)
{
struct node *q,*tmp;
int i;
q=last->link;
for(i=0;i<pos-1;i++)
{
q=q->link;
if(q==last->link)
{
cout<<"Less Elements "<<endl;
return;
}
}
tmp=(node*)malloc(sizeof(struct node));
tmp->info=data;
tmp->link=q->link;
q->link=tmp;
if(q==last)
{
last=tmp;
}
}
void deletion(int data)
{
// int chh,m,data;
struct node *tmp,*q;
if(last->link==last&&last->info==data)
{
tmp=last;
last=NULL;
free(tmp);
return;
}
q=last->link;
if(q->info==data)
{
tmp=q;
last->link=q->link;
free(tmp);
return;
}
while(q->link!=last)
{
if(q->link->info==data)
{
tmp=q->link;
q->link=tmp->link;
free(tmp);
return;
}
q=q->link;
}
if(q->link->info==data)
{
tmp=q->link;
q->link=last->link;
free(tmp);
last=q;
return;
}
}
No comments:
Post a Comment