#include <iostream.h>
#include <conio.h>
class linklist
{
private:
struct node
{
int data;
node *link;
}*p;
public:
linklist();
void append( int num );
void add_as_first( int num );
void addafter( int c, int num );
void del( int num );
void display();
int count();
~linklist();
};
linklist::linklist()
{
p=NULL;
}
void linklist::append(int num)
{
node *q,*t;
if( p == NULL )
{
p = new node;
p->data = num;
p->link = NULL;
}
else
{
q = p;
while( q->link != NULL )
q = q->link;
t = new node;
t->data = num;
t->link = NULL;
q->link = t;
}
}
void linklist::add_as_first(int num)
{
node *q;
q = new node;
q->data = num;
q->link = p;
p = q;
}
void linklist::addafter( int c, int num)
{
node *q,*t;
int i;
for(i=0,q=p;i<c;i++)
{
q = q->link;
if( q == NULL )
{
cout<<"\nThere are less than "<<c<<" elements.";
return;
}
}
t = new node;
t->data = num;
t->link = q->link;
q->link = t;
}
void linklist::del( int num )
{
node *q,*r;
q = p;
if( q->data == num )
{
p = q->link;
delete q;
return;
}
r = q;
while( q!=NULL )
{
if( q->data == num )
{
r->link = q->link;
delete q;
return;
}
r = q;
q = q->link;
}
cout<<"\nElement "<<num<<" not Found.";
}
void linklist::display()
{
node *q;
cout<<endl;
for( q = p ; q != NULL ; q = q->link )
cout<<endl<<q->data;
}
int linklist::count()
{
node *q;
int c=0;
for( q=p ; q != NULL ; q = q->link )
c++;
return c;
}
linklist::~linklist()
{
node *q;
if( p == NULL )
return;
while( p != NULL )
{
q = p->link;
delete p;
p = q;
}
}
int node_value;
int node_order;
void main()
{
linklist ll;
int numx=0;
while(numx != -1)
{
cout << "Enter your chois \n";
cout << "Dsiply nodes (1)\n";
cout << "Add new node Normal (2)\n";
cout << "Add new node after any node (3)\n";
cout << "Add new node in first (4)\n" ;
cout << "Delete node (5)\n" ;
cout << "Exit (-1)" ;
cin >> numx;
switch ( numx)
{
case 1:
cout << "============================================";
ll.display();
cout << endl;
cout<<"No. of elements = "<<ll.count()<< endl;
cout << "============================================ \n";
break;
case 2:
cout << "Please enter value of the node \n";
cin >> node_value;
ll.append(node_value);
break;
case 3:
cout << "Please enter node number \n";
cin >> node_order;
cout << "Please enter value of the node \n";
cin >> node_value;
ll.addafter(node_order,node_value);
break;
case 4:
cout << "Please enter value of the node \n";
cin >> node_value;
ll.add_as_first(node_value);
break;
case 5:
cout << "To Delete.Please enter value of the node \n";
cin >> node_value;
ll.del(node_value);
break;
case -1:
cout << "User end the programe ... edit by AMansur \n" ;
cout << "Press any key to exit \n" ;
break;
default:
cout << "Please enter corect choise" ;
}
}
getch();
}