#include<iostream.
h>
#include<conio.h>
#include<process.h>
#define true 1
#define false 0
class node
{
int info;
node *next;
public:
node *create();
int isempty();
void display();
int count();
void insertbeg();
void insertend();
void insertpos();
void deletebeg();
void deleteend();
void deletepos();
}*start=NULL;
node*node::create()
{
node *nptr;
int item;
nptr=new node;
if(nptr==NULL)
{
cout<<"overflow"<<endl;
}
else
{
cout<<"enter the value to be inserted"<<endl;
cin>>item;
nptr->info=item;
nptr->next=NULL;
}
return(nptr);
}
int node::isempty()
{
if(start==NULL)
return true;
else
return false;
}
void node::display()
{
node *temp=start;
if(isempty())
{
cout<<"list empty"<<endl;
}
else
{
cout<<"the linked list is"<<endl; while(temp!=NULL)
{
cout<<temp->info<<" ";
temp-temp->next;
}
}
}
int node::count()
{
node *temp=start;
int cnt=0;
while(temp!=NULL)
{
cnt++;
temp-temp->next;
}
return(cnt);
}
void node::insertbeg()
{ node *nptr=create(); nptr->next=start; start=nptr;
cout<<"node inserted "<<endl; }
void node::insertend() {
node *temp=start;
node *nptr=create();
if(isempty()) start=nptr; else {
while(temp->next!=NULL)
temp-temp->next;
temp->next=nptr;
}
cout<<"node inserted "<<endl;
}
void node::insertpos()
{
int i,pos,cnt;
node *nptr=create();
node *temp=start;
cout<<"enter the position"<<endl;
cin>>pos;
cnt=count();
if((pos>cnt+1)||(pos==0))
{
cout<<"invalid position"<<endl;
}
if(pos==1)
{
nptr->next=start;
start=nptr;
}
else
for(i=1;i<pos-1;i++) temp-temp->next;
{
nptr->next-temp->next; temp->next=nptr;
}
cout<<"node inserted"<<endl; }
void node::deletebeg()
{
node *temp=start;
if(isempty())
{
cout<<"underflow"<<endl;
}
else
{
start=temp->next; delete(temp);
cout<<"node deleted"<<endl; }
}
void node::deleteend()
{
node *temp=start;
node *save;
if (isempty()){ cout<<"underflow";
if (temp->next==NULL)
start=NULL;
else
{
while (temp->next!=NULL)
save=temp;
temp-temp->next; }
save->next=NULL;
}
delete(temp);
cout<<"node deleted"<<endl;
}
void node::deletepos()
{
node *temp=start,*save;
int i,pos,cnt;
if(isempty()) {
cout<<"underflow"<<endl; }
cout<<"enter the position of the node to be deleted"<<endl;
cin>>pos;
cnt=count();
if((pos>cnt) || (pos==0))
{
cout<<"invalid position"<<endl;
}
if(pos==1)
start=temp->next;
else
{
for(i=1;i<pos;i++)
{
save=temp;
temp-temp->next;
}
save->next=temp->next;
delete(temp);
cout<<"node deleted"<<endl;
}
}
void main()
{
clrscr();
node n;
int ch;
do
{
cout<<"\n 1:insertion at beg\n 2:insertion at end \n 3:insertion at position\n 4:deletion at beg\
n 5:deletion at end\n 6:deletion at position\n 7:display\n 8:exit";
cout<<"enter your choice"<<endl;
cin>>ch;
switch(ch)
{
case 1:n.insertbeg();break;
case 2:n.insertend(); break;
case 3:n.insertpos();break; case 4:n.deletebeg(); break;
case 5:n.deleteend(); break;
case 6:n.deletepos();break;
case 7:n.display();break;
case 8:exit(0);break;
default:cout<<"invalid input"<<endl;
}
}while(1);
}