#ifndef Stack_H
#define Stack_H

#ifdef GNU
#define std 
#include <iostream.h>
#else
#include <iostream>
#endif
#include "list.h"

////////////////////////////////////////////////////
// CLASS: STACK
// A derived class of List. Stack allows inserts and
// deletes only at the TOP (beginning).
////////////////////////////////////////////////////

template <class EleType>
class Stack: public List<EleType>{
 public:
  //Push element X on TOP of stack
  void Push(const EleType & X);
  //Insert is the same as Push
  void Insert(const EleType & X){ Push(X); }

  //Pop the TOP of the stack and return the element
  EleType Pop();
};

template <class EleType>
void
Stack<EleType>::Push(const EleType & X){
  //1. set the current pointer properly
  List<EleType>::Insert(X);
}

template <class EleType>
EleType
Stack<EleType>::Pop(){
  //1. set the current pointer properly
  //2. access the TOP element, call it etyp
  //Delete(etyp); 
  //return etyp;
}

#endif  


