------------------------------------------------------------------------------
MC logo
Array Template Stack
[^] Code Examples
------------------------------------------------------------------------------
<<Template Generalized Stack Driver stackt2.h Array Template Test Driver>>
//
//*****************************************************************************
//* C++ stack using templates.  Note that everything is here; there is no
//* implementation CC file.
//*****************************************************************************
//

#ifndef _STACKT_H_
#define _STACKT_H_

// This is a template class.  The name T stands for any type.  By saying
// Stack<whatever>, we create a stack of whatevers.
template <class T, int size = 50>
class Stack
{
 private:
        T data[size];
        int top_elt;
 public:
        // Create an empty stack.
        Stack() { top_elt = -1; }

        // Add an element to the stack.  Note that you must send a pointer,
        // and the stack actually stores the pointer.
        void push(T e)
        {
                data[++top_elt] = e;
        }

        // Pop the stack and return the top item pointer.  If the stack is
        // empty, return the null pointer.
        T pop() {
                if(empty()) return 0;
                else return data[top_elt--];
        }

        // Return the top item pointer.  If none, return the null pointer.
        T top() {
                if(empty()) return 0;
                return data[top_elt];
        }

        // Tell if the stack is empty.
        bool empty() { return top_elt == -1; }
};

#endif
<<Template Generalized Stack Driver Array Template Test Driver>>