Está en la página 1de 2

PilaEnlazada.

java Page 1 of 2

H:\EDVideojuegos\programasJava\AplicaciónPilaListaEnlazadaGenerica\src\aplicaciónpilalistaenlazadagenerica\PilaEnlazada.java
package aplicaciónpilalistaenlazadagenerica;
import java.util.*; // En este paquete se encuentra la clase de la excepción
// EmptyStackException;

/**---------------------------------------------------------------------
* IMPLEMENTACIÓN DEL TAD PILA CON UNA LISTA ENLAZADA SIMPLE GENÉRICA Y
* UNA VARIABLE INSTANCIA CON EL NÚMERO DE ELEMENTOS DE LA PILA.
* @author usuario
* La
*---------------------------------------------------------------------*/
public class PilaEnlazada<E> implements Pila<E> {
// Se elige que la cima de la pila sea el primer nodo de la lista enlazada
// pues la inserción y eliminación del primer elemento son ambas O(1).

//datos:
private Nodo<E> pila;
int numElem; //número de elementos que hay en la pila.

//métodos:
/**----------------------------------------
* Constructor que crea una pila vacía.
*/
public PilaEnlazada(){
// Inicializa las variables instancia a los valores que corresponden
// a los de una pila vacía.
pila = null; //pila no apunta a ningún nodo.
numElem = 0;
}

/**--------------------------------------------------------
* 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;
Nodo nodoActual;

nodoActual = pila;
s = "[";
if (!isEmpty()){
s = s + nodoActual.info;
nodoActual = nodoActual.sig;
while (nodoActual != null){
s = s + "," + nodoActual.info;
nodoActual = nodoActual.sig;
}
}
return s + "]";
}

/**------------------------------------------------------------------
* Devuelve el número de elementos que hay en la pila
* @return. numElem
*/
@Override
public int size() {
return numElem; //nota: tener actualizado el número de elementos en la
//variable instancia numElem hace que size() sea O(N)
//al no tener que recorrer la lista para calcularlo.
}

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

/**----------------------------------------------------------
* 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.
*/
@Override
public E top() throws EmptyStackException {
if (isEmpty())
throw new EmptyStackException();
return pila.info; //La cima de la pila es la cabeza de la lista.
// Esta instrucción sólo se ejecuta cuando no hay

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


PilaEnlazada.java Page 2 of 2

// excpción, es decir, cuando la pila tiene elementos.


}

/**----------------------------------------------------------
* Inserta un elemento en la parte superior de la pila
* @param elem, elemento que va a ser insertado.
*/
@Override
public void push(E elem) {
Nodo<E> nuevoNodo = new Nodo<E>(elem);

// Inserción de elem por el principio.


nuevoNodo.sig = pila;
pila = nuevoNodo;
numElem++;
}

/**----------------------------------------------------
* 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.info;
pila = pila.sig;
numElem--;
return cima;
}
}

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

También podría gustarte