Está en la página 1de 2

PilaArray.

java Page 1 of 2

H:\EDVideojuegos\programasJava\AplicaciónPilaGenConArray\src\aplicacionpilagenconarray\PilaArray.java
package aplicacionpilagenconarray;

import java.util.EmptyStackException;

/**-----------------------------------------------------------------
* IMPLEMENTACIÓN DEL TAD PILA DE CUALQUIER OBJETO USANDO UN ARRAY
* GENÉRICO REDIMENSIONABLE Y UNA VARIABLE INSTANCIA CON CON DEL ÚLTIMO
* ELEMENTO EN EL ARRAY.
* @author usuario
*------------------------------------------------------------------*/
public class PilaArray<E> implements Pila<E> {

//datos:
private int maxElem = 5; // numero de elementos que caben en el array.
private E pila[];
private int posCima = -1; // índice del elemento de la cima

//métodos:

/**----------------------------------------
* Constructor que crea una pila vacía.
*/
public PilaArray(){
pila = (E[]) new Object[maxElem];//no se permite hacer new
// con el tipo genérico. Hay que
// crear una array de objetos y
// y luego hacer un casting a un
// array de objetos de clase E.
}

/**--------------------------------------------------------
* Calcula y devuelve un String con todos los elementos.
* @return. Devuelve los valores de los elementos de la pila en un String.
*/
@Override
public String toString(){
String s;
s = "[";
if (size() > 0){
s = s + pila[0];
for (int i = 1; i <= posCima; i++)
s = s + "," + pila[i];
}
return s + "]";
}

/**------------------------------------------------------------------
* Calcula y devuelve el número de elementos que hay en la pila
* @return. Devuelve el número de elementos que hay en la pila.
*/
@Override
public int size() {
return (posCima + 1);
}

/**--------------------------------------------------------
* Calcula si la pila está vacía
* @return true si la pila está vacía, false si no.
*/
@Override
public boolean isEmpty() {
return (posCima < 0);
}

/**----------------------------------------------------------
* Devuelve el elemento que hay en la cima de la pila.
* @throws EmptyStackException si la pila está vacía
* @return el valor del elemento que hay en lo alto de la pila.
*/

file://H:\EDVideojuegos\programasJava\PDFs\Implementaciones pilas\implementació... 02/03/2015


PilaArray.java Page 2 of 2

@Override
public E top() throws EmptyStackException {
if (isEmpty())
throw new EmptyStackException();
return pila[posCima];
}

/**----------------------------------------------------------
* Inserta un elemento en la parte superior de la pila
* @param elem, elemento que va a ser insertado.
*/
@Override
public void push(E elem) {
E a[];

if (posCima == maxElem-1) { //la pila está llena. Se escala al doble


a = (E[]) new Object[2*maxElem];
for (int i = 0; i <= posCima; i++)
a[i] = (E) pila[i];
pila = a;
maxElem = maxElem*2;
}
posCima++;
pila[posCima]= elem;
}

/**----------------------------------------------------
* Devuelve el elemento que hay en la cima de la pila.
* @return el elemento de la cima
* @throws EmptyStackException si la pila está vacía
*/
@Override
public E pop() throws EmptyStackException {
E cima;

if (isEmpty())
throw new EmptyStackException();
cima = pila[posCima];
posCima--;
return cima;
}

file://H:\EDVideojuegos\programasJava\PDFs\Implementaciones pilas\implementació... 02/03/2015

También podría gustarte