Sei sulla pagina 1di 4

#include<iostream.

h>
#include<conio.h>
#include<stdlib.h>
class list
{ struct node
{
int data;
node *link;
}; node *first;
public:
list();
void initialiselist();
void insertlistfirst(int item);
void insertlistlast(int item);
void insertlistany(int item, int pos);
void deletelistfirst();
void deletelistlast();
void deletelistany(int pos);
void display();
~list();
};
list::list()
{ first = NULL;
}
void list::initialiselist()
{ int item, i, n;
cout<<"how many nodes you want to create";
cin>>n;
node *temp, *current;
for(i=1; i<=n; i++)
{
cout<<"Enter the data field"<<endl;
cin>>item;
temp=new node;
current=new node;
temp->data=item;
temp->link=NULL;
if(first==NULL)
first=temp;
else
current->link=temp;
current=temp;
current->link=NULL;
}
delete current;
delete temp;
}
void list::insertlistfirst(int item)
{ node *temp;
temp=new node;
temp->data=item;
temp->link=first;
first=temp;
delete temp;
}
void list::insertlistlast(int item)
{ node *temp, *current;
temp=new node;
current=new node;
if(first==NULL)
{
temp->data=item;
temp->link=NULL;
first=temp;
}
else

current=first;
while(current->link!=NULL)
current=current->link;
temp->data=item;
temp->link=NULL;
current->link= temp;

}
delete current;
delete temp;

}
void list::insertlistany(int item, int pos)
{ node *temp, *current,*previous;
int i;
temp=new node;
if((first==NULL)||(pos==1))
{
temp->data=item;
temp->link=first;
first=temp;
return;
}
current=new node;
previous=new node;
current=first->link;
previous=first;
while(current->link!=NULL)
{ if (i+1==pos)
break;
else
{
previous=current;
current=current->link;
i++;
}
}
temp->data=item;
temp->link= current;
previous->link=temp;
delete current;
delete previous;
delete temp;
}
void list::deletelistfirst()
{ node *current;
int item;
if(first==NULL)
{
cout<<"list is empty";
return;
}
current=new node;
current=first;
item=first->data;
first=first->link;
cout<<"deleted item:"<<item;
delete current;
}
void list::deletelistlast()
{ node *current,*previous;;
int item;
if(first==NULL)
{
cout<<"list is empty";
return;
}

current=new node;
previous=new node;
current=first;
previous=NULL;
if(current->link==NULL)
current=current->link;
else
{ while(current->link!=NULL)
{
previous=current;
current=current->link;
}
previous->link=current->link;
}
item=current->data;
cout<<"deleted item:"<<item;
delete current;
delete previous;

}
void list::deletelistany(int pos)
{ node *current,*previous;;
int item,i;
if(first==NULL)
{
cout<<"list is empty";
return;
}
current=new node;
previous=new node;
if(pos==1)
{
current=first;
item=current->data;
first=first->link;
cout<<"deleted item:"<<item;
delete current;
delete previous;
}
current=first->link;
previous=current;
while(current->link!=NULL)
{
if(i==pos)
{
previous->link=current->link;
item=current->data;
cout<<"deleted item:"<<item;
delete current;
delete previous;
}
else
{
previous=current;
current=current->link;
i++;
}
}
}
void list::display()
{
node *current;
clrscr();
current=first;
cout<<"strat";
while(current->link!=NULL)
{
cout<<current->data;
current=current->link;
}

cout<<"end:";
}
void main(void)
{
list l;
int item, pos, choice;
clrscr();
cout<<"implementation of singly linked list\n";
l.initialiselist();
while(1)
{
cout<<"1.insert as a first node
\n2.insert as a last node
\n3.insert at a particular location
\n4.delete first node
\n5.delete last node
\n6.delete any node
\n7.display the elements
\n8.exit\n\nenter your choice";
cin>>choice;
switch(choice)
{
case 1:
{ cout<<"\nenter data to be inserted";
cin>>item;
l.insertlistfirst(item);
break;
}
case 2:
{ cout<<"\nenter data to be inserted";
cin>>item;
l.insertlistlast(item);
break;
}
case 3:
{ cout<<"\nenter data to be inserted";
cin>>item;
cout<<"\nenter position to insert";
cin>>pos;
l.insertlistany(item,pos);
break;
}
case 4:
{ l.deletelistfirst();
break;
}
case 5:
{ l.deletelistlast();
break;
}
case 6:
{ cout<<"\nenter position to delete";
cin>>pos;
l.deletelistany(pos);
break;
}
case 7:
{ l.display();
break;
}
case 8:
}

exit(0);
}

Potrebbero piacerti anche