-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPila.hpp
57 lines (47 loc) · 987 Bytes
/
Pila.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#ifndef BATTLESHIP_PILA_HPP
#define BATTLESHIP_PILA_HPP
#include "Nodo.hpp"
// definicion de clase
template <class T> class Pila {
private:
// variables de instancia
Nodo<T>* tope = nullptr;
int tamano = 0;
public:
// funciones
Pila() {};
Pila(T dato) : tope(new Nodo<T>(dato)), tamano(1) {};
T getTope();
int getTamano() {return tamano;};
void apilar(T dato);
T desapilar();
};
// definiciones de las funciones no-inline de la clase
template<typename T>
void Pila<T>::apilar(T dato) {
tope = new Nodo<T>(dato, tope);;
tamano++;
}
template <typename T>
T Pila<T>::desapilar() {
if(tope) {
// copy initialization
T datoADevolver(tope->dato);
Nodo<T>* nodoABorrar = tope;
tope = tope->next;
delete nodoABorrar;
tamano--;
return datoADevolver;
} else {
return nullptr;
}
}
template<class T>
T Pila<T>::getTope() {
if(tope) {
return tope->dato;
} else {
return nullptr;
}
}
#endif