Sunday, December 12, 2010

Stack using linked list

//Program to implement stack using linked list.

#include
#include
#include


struct node
{
int data;
node *LINK;
};

class stack
{
node *top;
public:
stack()
{
top=NULL;
}
void push(int);
void pop();
void display();
~stack();
};

void stack::push(int num)
{
node *temp;
temp=new node;
if(temp==NULL)
{
cout<<"\nThe Linked Stack is full";
return;
}
temp->data=num;
temp->LINK=NULL;
if(top==NULL)
{
top=temp;
return;
}
temp->LINK=top;
top=temp;
return;
}

void stack::pop()
{ node *temp;

if(top==NULL)
{
cout<<"\nThe Linked Stack is empty";
return;
}
temp=top;
cout<<"\nThe deleted element is "<data;
top=top->LINK;
delete temp;
}

void stack:: display()
{

node *temp;
if(top==NULL)
{
cout<<"\nThe Linked stack is empty";
return;
}
temp=top;
while(temp!=NULL)
{
cout<data<<" ";
temp=temp->LINK;
}
}

stack::~stack()
{
node *temp;

while(top!=NULL)
{
temp=top;
top=top->LINK;
delete temp;
}
}

void main()
{
stack s;
int num,c;
char ch;
clrscr();
do
{
cout<<"\n-----------------Linked Stack Operations-----------------";
cout<<"\n1_PUSH";
cout<<"\n2_POP";
cout<<"\n3_DISPLAY";
cout<<"\n4_EXIT";
cout<<"\nEnter your choice<1-4>:";
cin>>c;

switch(c)
{
case 1: cout<<"\nEnter the number to be pushed: " ;
cin>>num;
s.push(num);
break;
case 2:
s.pop();
break;

case 3:
s.display();
break;

case 4:
exit(0);
break;

default:
cout<<"\nInvalid choice";

}
cout<<"\nDo you want to continue:";
cin>>ch;
}while(ch=='y'||ch=='Y');

getch();
}

No comments:

Post a Comment