Para definir una clase pila en el compilador (en este caso c++) existe plantillas para manejar estos tipos de datos llamado template y en este caso se debe incluir la librería stack:
ejemplo:
#include<stack>//libreria
seguido de la declaracion:
stack int dato;//declaro una variable “dato” entera de clase pila
con esto podemos usar uso de las funciones predefinidas del compilador como:
dato.push(); // inserta en la pila (push)
dato.pop(); // elimina el tope de la pila (pop)
dato.top(); // regresa el tope de la pila (top)
dato.empty() // esta vacia la pila? (empty)
a continuacion se muestra como se define la clase en el compilador este se puede
observar en la carpeta include del compilador. (archivo sacado de mi compilador
con carpeta tclite y lo muestro por cuestiones ilustrativas porque mentiria
si dijera que le entiendo):
#ifndef stack_h
#define stack_h
#include "ordcltn.h"
extern const class class_stack;
class stack : public seqcltn {
orderedcltn contents;
public:
stack(unsigned size =cltn_default_capacity) : contents(size) {}
stack(const stack& s) : contents(*((orderedcltn*)&s)) {}
bool operator==(const stack& s) const
{ return contents == ((stack*)&s)->contents; }
bool operator!=(const stack& s) const { return !(*this==s); }
void operator=(const stack& s) { contents = ((stack*)&s)->contents;
}
object*& operator[](int i) const { return contents.at(size()-i-1); }
void push(const object& ob) { contents.addlast(ob); }
object* pop() { return contents.removelast(); }
object* top() const { return contents.last(); }
virtual object* add(const object& ob);
virtual collection& addcontentsto(collection& cltn) const;
virtual object*& at(int i) const;
virtual unsigned capacity() const;
virtual void deepenshallowcopy();
virtual unsigned hash() const;
virtual const class* isa() const;
virtual bool isempty() const;
virtual bool isequal(const object& ob) const;
virtual object* last() const;
virtual void printon(ostream& strm) const;
virtual void resize(unsigned newsize);
virtual object* removelast();
virtual unsigned size() const;
virtual const class* species() const;
};
#endif