Write a menu driven program to perform insert and delete operations in a circular linked list
#include
#include
#include
#include
#include
int insbeg(int item);
int inspos(int item);
int insend(int item);
int length();
int delbeg();
int delpos();
int delend();
struct node
{
int
info;
struct
node *link;
};
typedef struct node n1;
n1 *last = NULL;
n1 *currptr, *newnode, *preptr;
class queue
{
public:
create();
display();
ins();
del();
};
queue::create()
{
char
ch;
newnode
= (n1*)malloc(sizeof(n1));
last
= newnode;
newnode->link
= last;
while
(1)
{
cout
<< "\nEnter the item value :\t" ;
cin
>> newnode->info;
cout
<< "\nContinue? (y/n) : " ;
flushall();
cin
>> ch;
if
(ch=='y')
{
newnode
= new n1;
newnode->link
= last->link;
last->link
= newnode;
last
= newnode;
}
else
{
break;
}
}
return
0;
}
queue::display()
{
currptr
= last->link;
if
(last==NULL)
{
cout
<< "\nEmpty list" ;
}
else
{
cout
<< "\nThe list is : \n" ;
while
(currptr!=last)
{
cout
<< currptr->info;
cout
<< "--->" ;
currptr
= currptr->link;
}
cout
<< currptr->info;
cout
<< "--->" ;
cout
<< "NULL" ;
}
return
0;
}
queue::ins()
{
int
ch, item;
cout
<< "\nEnter the item to insert :\t" ;
cin
>> item;
newnode
= new n1;
cout
<< "\n\nChoose any given option : ";
cout
<< "\n\t 1. At the beginning" ;
cout
<< "\n\t 2. At a position" ;
cout
<< "\n\t 3. At the end";
cout
<< "\n\nEnter your choice :\t" ;
cin
>> ch;
switch
(ch)
{
case
1: insbeg(item);
break;
case
2: inspos(item);
break;
case
3: insend(item);
break;
default:
cout << "\nInvalid choice" ;
}
display();
return
0;
}
insbeg(int item)
{
if
(last==NULL)
{
newnode->info
= item;
last
= newnode;
last->link
= newnode;
}
else
{
newnode->info
= item;
newnode->link
= last->link;
last->link
= newnode;
}
return
0;
}
inspos(int item)
{
int
i, pos;
currptr
= last->link;
cout
<< "\nEnter the position :\t" ;
cin
>> pos;
if
(pos==-1)
{
insbeg(item);
}
else
{
for
(i=1 ;i
{
currptr
= currptr->link;
}
newnode->link
= currptr->link;
newnode->info
= item;
currptr->link
= newnode;
}
return
0;
}
insend(int item)
{
newnode->info
= item;
if
(last==NULL)
{
last
= newnode;
newnode->link
= last;
}
else
{
newnode->link
= last->link;
last->link
= newnode;
last
= newnode;
}
return
0;
}
queue::del()
{
int
cho;
cout
<< "\n\nChoose any given option : ";
cout
<< "\n\t 1. Delete from beginning" ;
cout
<< "\n\t 2. Delete from position" ;
cout
<< "\n\t 3. Delete from end";
cout
<< "\n\nEnter your choice :\t" ;
cin
>> cho;
switch
(cho)
{
case
1: delbeg();
break;
case
2: delpos();
break;
case
3: delend();
break;
default:
cout << "\nInvalid choice" ;
}
display();
return
0;
}
delbeg()
{
currptr
=last->link;
if
(last==NULL)
{
cout
<< "\nEmpty list" ;
}
else
if (currptr==last)
{
last
= NULL;
delete
currptr;
}
else
{
last->link
= currptr->link;
delete
currptr;
}
return
0;
}
delpos()
{
int
i, pos;
cout
<< "\nEnter the position :\t" ;
cin
>> pos;
if
(pos==1)
{
delbeg();
}
else
if (pos==length())
{
delend();
}
else
{
currptr
= last->link;
for
(i=1 ;i
{
preptr
= currptr;
currptr
= currptr->link;
}
preptr->link
= currptr->link;
delete
currptr;
}
return
0;
}
delend()
{
currptr
=last->link;
if
(last==NULL)
{
cout
<< "\nEmpty list" ;
}
else
{
if
(currptr==last)
{
last
= NULL;
delete
currptr;
}
else
{
while
(currptr->link!=last)
{
currptr
= currptr->link;
}
currptr->link
= last->link;
last
= currptr;
}
}
return
0;
}
int length()
{
int
len = 0;
if
(last==NULL)
{
cout
<< "\nEmpty list" ;
return(len);
}
else
{
currptr
= last->link;
while
(currptr!=last)
{
++len;
currptr
= currptr->link;
}
return(++len);
}
}
void main()
{
queue
obj;
int
ch1;
char
ch2;
clrscr();
cout
<< "\nCreate a linked list" ;
obj.create();
do
{
cout
<< "\n\nChoose any given option : " ;
cout
<< "\n\t 1. Insertion" ;
cout
<< "\n\t 2. Deletion" ;
cout
<< "\n\t 3. Length of circular linked list" ;
cout
<< "\n\nEnter your choice :\t" ;
cin
>> ch1;
switch
(ch1)
{
case
1: obj.ins();
break;
case
2: obj.del();
break;
case
3: cout << "\nThe length is :\t" << length();
break;
default:
cout << "\n\nInvalid choice" ;
}
cout
<< "\n\nDo you want to continue? (y/n) :\t" ;
flushall();
cin
>> ch2;
}
while
(ch2=='y');
getch();
}
Comments
Post a Comment