Welcome to W3Courses
 Like Us on Facebook

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;}
};

Share