4.1.2 Definición clase pila.

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