Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // Created by Julio Tentor <jtentor@fi.unju.edu.ar>
- //
- #ifndef DEMOSTACK2_STACK_H
- #define DEMOSTACK2_STACK_H
- #include <stdexcept>
- template <class Elemento>
- class stack {
- public:
- stack(int capacidad = 10);
- virtual ~stack();
- void push(const Elemento elemento);
- Elemento pop();
- Elemento peek();
- Elemento top() { return this->peek(); }
- bool empty();
- int count();
- private:
- int capacidad;
- Elemento *datos;
- int cuenta;
- };
- template <class Elemento>
- stack<Elemento>::stack(int capacidad) {
- this->capacidad = capacidad;
- this->datos = new Elemento[this->capacidad];
- this->cuenta = 0;
- }
- template <class Elemento>
- stack<Elemento>::~stack() {
- delete [] this->datos;
- }
- template <class Elemento>
- void stack<Elemento>::push(const Elemento elemento) {
- if (this->cuenta >= this->capacidad) {
- throw std::runtime_error("ERROR La pila esta llena...");
- }
- this->datos[this->cuenta] = elemento;
- ++this->cuenta;
- }
- template <class Elemento>
- Elemento stack<Elemento>::pop() {
- if (this->empty()) {
- throw std::runtime_error("ERROR La pila esta vacía...");
- }
- --this->cuenta;
- return this->datos[this->cuenta];
- }
- template <class Elemento>
- Elemento stack<Elemento>::peek() {
- if (this->empty()) {
- throw std::runtime_error("ERROR La pila esta vacía...");
- }
- return this->datos[this->cuenta - 1];
- }
- template <class Elemento>
- bool stack<Elemento>::empty() {
- return this->cuenta <= 0;
- }
- template <class Elemento>
- int stack<Elemento>::count() {
- return this->cuenta;
- }
- #endif //DEMOSTACK2_STACK_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement