ADT Stack Source Code in C++
Following is the source code for an ADT Stack
#include <iostream.h>
template <class Item>
class STACK
{
private:
struct node
{ Item item; node* next;
node(Item x, node* t)
{ item = x; next = t;}
};
typedef node *link;
link head, null;
void deletelist()
{
for (link t = head; t != 0; head = t)
{ t = head->next; delete head; }
}
public:
STACK(int)
{ head = 0;}
STACK(const STACK& rhs)
{ head = 0; *this = rhs;}
STACK& operator=(const STACK& rhs)
{
if (this == &rhs)
return *this;
deletelist();
link t = rhs.head;
while (t != 0)
{
push(t->item);
t = t->next;
}
return *this;
}
~STACK()
{deletelist();}
Item frontstack()
{ return head->item; }
STACK nullstack()
{ return (null = 0);}
int empty_stack(STACK S)
{ return (S == 0);}
bool empty() const
{ return (head == 0);}
void push(Item x)
{ head = new node(x, head);}
Item pop()
{ Item v = head->item; link t = head->next;
delete head; head = t; return v;}
};
