Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DOCENTE:
CONTENIDO:
Listas dinámicas - PILAS
35 1 10
2
PUSH – INSERTAR- APILAR
Suponga que se desea insertar los siguientes elementos: 3, 1, 4, 8, 7
ALGORITMO DE INSERCIÓN:
Observe que este método debe devolver un valor de tipo integer, en caso de que la pila este
vacía, la instrucción MAX_VALUE, devuelve el valor máximo que puede almacenar un dato de
//Método Pop tipo integer, esta posibilidad puede ser modificada ya que el valor a retornar puede ser
public int desapilar () { cualquiera que identifique que la Pila esta vacía,
if (!esVacia())
Suponga que se tiene la siguiente pila y se ejecuta el método:
{ int dato = inicio.getValor();
A inicio = inicio.getSiguiente(); dato
return dato; 11 2
}
else
{ return Integer.MAX_VALUE; A
}
} Al momento que ocurre el proceso A la eliminación del nodo 3 es
automática porque Java utiliza referencias
La clase Pila con los métodos analizados:
La clase Pila utiliza una variable estática de tipo Nodo para controlar las variables dinámicas de la estructura de la pila
La Primera clase será la que La Segunda clase será la que corresponde //Método Pop
corresponde al Nodo: a la Pila y utiliza la clase Nodo: public int desapilar () {
public class Nodo { public class Pila { if (!esVacia())
private int valor; private Nodo inicio; { int dato = inicio.getValor();
private Nodo sig; //Método constructor inicio = inicio.getSiguiente();
// Métoso constructor public void Pila(){ return dato;
public void Nodo(){ inicio = null; }
this.valor = 0; } else
this.sig = null; //Método IsEmpty { return Integer.MAX_VALUE;
} public boolean esVacia(){ }
// Métodos get y set return inicio == null; } La Tercera clase será la que corresponde a las instrucciones que
public int getValor() { } } aplican la Pila y prueba su funcionamiento:
return valor; //Método Push //Instrucciones para probar la Pila
} public void apilar(int valor){ public static void main(String[] args) {
public void setValor(int valor) { Nodo nuevo = new Nodo(); Pila pila = new Pila();
this.valor = valor; nuevo.setValor(valor); pila.apilar(4);
} if (esVacia()) { pila.apilar(16);
public Nodo getSiguiente() { inicio = nuevo; pila.apilar(12);
return sig; } pila.apilar(8);
} else{ pila.apilar(65);
public void setSiguiente(Nodo sig) { nuevo.setSiguiente(inicio); System.out.println(“Elemento: " + pila.desapilar() + " Sale");
this.sig = sig; inicio = nuevo; System.out.println(“Elemento: " + pila.desapilar() + " Sale");
} } System.out.println(“Elemento: " + pila.desapilar() + " Sale");
} } }
Otros métodos de la clase pila: (Verifica la existencia de un nodo)
Este Algoritmo busca un elemento en la pila. El parámetro referencia es el valor del nodo a buscar. Además devuelve true si el
valor de referencia existe en la pila.
El siguiente algoritmo no cumple con las reglas de la Pila donde define que nodo utilizado nodo eliminado, pero define el procedimiento para
recorrer una estructura y localizar un determinado elemento:
Otra alternativa de extraer un elemento sin la necesidad de devolver el valor del nodo:
public void retirar(){
if (!esVacia()) {
inicio = inicio.getSiguiente(); 2
}
}
Asumiendo que se desea mostrar toda la información de la Pila: