stack.h and stackdef.h

 

/************************************************************************
*

stack.h

                                                                        *
************************************************************************/


#ifndef _STACK_TPL_H
      #define _STACK_TPL_H

      template<class T>
      class stack
      {
      private:
             T*  v;
             T*  p;
             int sz;

      public:
             stack( int );
              ~stack();
              void push( T );
      };
#endif


/************************************************************************
*

stackdef.h

                                                                        *
************************************************************************/


#include "stack.h"

template<class T> stack<T>::stack( int s )
{
      v = p = new T[sz=s];
}

template<class T> stack<T>::~stack()
{
      delete [] v;
}

template<class T> void stack<T>::push( T a )
{
      *p++ = a;
}