-
Notifications
You must be signed in to change notification settings - Fork 0
/
Pila.java
97 lines (86 loc) · 2.29 KB
/
Pila.java
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package lineales.estaticas;
/**
*
* @author mateo
*/
public class Pila {
private Object[] arreglo;
private int tope;
private static final int TAMANIO = 10;
public Pila() {
this.arreglo = new Object[TAMANIO];
this.tope = -1;
}
public boolean apilar(Object nuevoElem) {
//Agrega un elemento de la pila
boolean exito;
if (this.tope + 1 >= this.TAMANIO) {
exito = false;
} else {
this.tope++;
this.arreglo[tope] = nuevoElem;
exito = true;
}
return exito;
}
public boolean desapilar() {
//Quita un elemento de la pila
boolean exito;
if (this.tope < 0) {
//La pila esta vacia
exito = false;
} else {
this.arreglo[tope] = null;
tope--;
exito = true;
}
return exito;
}
public Object obtenerTope() {
//Retorna el elemento del tope de la pila
Object elemento = null;
if (this.tope >= 0) {
elemento = this.arreglo[tope];
}
return elemento;
}
public boolean esVacia() {
//Verifica si la pila está vacia
return tope == -1;
}
public void vaciar() {
//Vacia la pila
while (tope > -1) {
arreglo[tope] = null;
tope--;
}
}
public Pila clone() {
//Clona la pila actual
Pila clon = new Pila();
if (!esVacia()) {
clon.tope = this.tope;
for (int i = 0; i <= this.tope; i++) {
clon.arreglo[i] = this.arreglo[i];
}
}
return clon;
}
public String toString() {
//Devuelve la pila en un string
String ret = "";
if (this.tope == -1) {
ret = "La pila está vacia";
} else {
for (int i = 0; i <= this.tope; i++) {
ret = ret + this.arreglo[i] + " ";
}
}
return ret;
}
}