Estructuras_de_Datos/src/cl/cromer/estructuras/Pila.java

125 lines
2.2 KiB
Java
Raw Normal View History

2016-06-20 13:25:01 -04:00
package cl.cromer.estructuras;
2016-07-02 18:04:18 -04:00
import java.util.Random;
2016-06-20 13:25:01 -04:00
/**
* Crear una estructura de dato de tipo pila.
2016-06-29 00:33:19 -04:00
*
2016-06-20 13:25:01 -04:00
* @author Chris Cromer
*/
2016-06-26 13:25:51 -04:00
final public class Pila {
2016-07-03 11:28:26 -04:00
/**
* La pila.
*/
private String pila[];
2016-06-20 13:25:01 -04:00
2016-07-03 11:28:26 -04:00
/**
* La cantidad de elementos en la pila.
*/
private int size;
2016-06-20 13:25:01 -04:00
2016-07-03 11:28:26 -04:00
/**
* Inicializar.
*/
public Pila() {
pila = null;
size = 0;
}
2016-06-20 13:25:01 -04:00
2016-07-03 11:28:26 -04:00
/**
* Pop un valor de encima de la pila.
*
* @return boolean: Verdad si fue exitoso.
*/
public boolean pop() {
if (this.pila != null && size() > 0) {
String pila[] = new String[this.pila.length - 1];
System.arraycopy(this.pila, 0, pila, 0, pila.length);
this.pila = pila;
size--;
return true;
}
else {
return false;
}
}
2016-06-20 13:25:01 -04:00
2016-07-03 11:28:26 -04:00
/**
* Devolver la cantidad de elementos en la pila.
*
* @return int: La cantidad de elementos.
*/
public int size() {
return size;
}
2016-07-02 18:04:18 -04:00
2016-07-03 11:28:26 -04:00
/**
* Peek al valor que está encima de la pila.
*
* @return int: El valor que está encima de la pila.
*/
public int peek() {
if (pila != null && size() > 0) {
return Integer.valueOf(pila[pila.length - 1]);
}
else {
return Integer.MIN_VALUE;
}
}
2016-06-20 13:25:01 -04:00
2016-07-03 11:28:26 -04:00
/**
* Devolver el valor que está en un indice de la pila.
*
* @param indice int: El indice que desea devolver.
*
* @return String: El valor que está guardado en el indice.
*/
public String getIndice(int indice) {
if (pila != null && indice >= 0 && indice < pila.length) {
return pila[indice];
}
else {
return null;
}
}
2016-07-02 18:04:18 -04:00
2016-07-03 11:28:26 -04:00
/**
* Llenar la pila con valores al azar.
*/
@SuppressWarnings("Duplicates")
public void llenar() {
Random random = new Random();
int maximo = 99;
int minimo = 0;
int rango = maximo - minimo + 1;
2016-07-02 18:04:18 -04:00
2016-07-03 11:28:26 -04:00
for (int i = size(); i < 10; i++) {
int numero = random.nextInt(rango) + minimo;
push(numero);
}
}
2016-07-02 18:04:18 -04:00
2016-07-03 11:28:26 -04:00
/**
* Push un valor en la pila encima.
*
* @param valor int: El valor a push.
*/
public void push(int valor) {
if (this.pila != null) {
String pila[] = new String[this.pila.length + 1];
int i;
for (i = 0; i < this.pila.length; i++) {
pila[i] = this.pila[i];
}
pila[i] = String.valueOf(valor);
this.pila = pila;
size++;
}
else {
String pila[] = new String[1];
pila[0] = String.valueOf(valor);
this.pila = pila;
size++;
}
}
2016-06-20 13:25:01 -04:00
}