Está en la página 1de 8

Estructura de Datos IS 212

Ingeniera de Sistemas - UNSCH


LABORATORIO DE PILAS
Revisin y trascripcin de programas Aplicacin de la Pila.
El objetivo de esta prctica de laboratorio es construir el proyecto con la
implementacin de las clases y mtodos para ingresar, retirar e imprimir los datos de la
Pila. Se trata de una versin acadmica que parte del siguiente men de opciones

Modelamiento
El elemento base de toda lista son los nodos, se implementa una clase denominada
Nodo.
Las operaciones bsicas correspondientes a los requerimientos se encapsulan en la
clase llamada Pila. Estas son:
o Ingresar un dato
o Retirar un dato
o Mostrar los datos
Las opciones del men se encapsulan en la clase denominada AplicacinPila

Ing. Jennifer Roco Pillaca De La Cruz


de 8
Gua de laboratorio

Pgina 1

Estructura de Datos IS 212


Ingeniera de Sistemas - UNSCH

Diagrama de clases de la Pila

Clase Nodo
Clase que modela el elemento bsico de la Pila conformado por los campos dato de tipo
entero y la auto-referencia denominada enlace que tiene el mismo nombre de la clase.
La actividad de esta parte del laboratorio consiste en que adems de leer el programa, se
debe digitar la clase, los mtodos y la correspondiente documentacin. A continuacin
se codifica la clase Nodo:
package Pilas;
public class Nodo {
private int dato;
private Nodo enlace;
/**
* se crea un nodo
*/
public Nodo() {
this.dato= 0;
Ing. Jennifer Roco Pillaca De La Cruz
de 8
Gua de laboratorio

Pgina 2

Estructura de Datos IS 212


Ingeniera de Sistemas - UNSCH
this.enlace=null;
}
/**
* se crea un nodo con un valor
*/
public Nodo(int dato){
this.dato= dato;
this.enlace=null;
}
/**
* mtodo que retorna el dato de la pila
* donde esta la referencia
* @return dato
*/
public int getDato() {
return dato;
}
/**
* mtodo que ingresa un dato al nodo de la pila
* @param dato
*/
public void setDato(int dato) {
this.dato = dato;
}
/**
* metodo que retorna la referencia de la pila
* @return enlace
*/
public Nodo getEnlace() {
return enlace;
}
/**
* mtodo que actualiza la referencia
* @param enlace
*/
public void setEnlace(Nodo enlace) {
this.enlace = enlace;
}
}
La clase Pila
Clase que modela la implementacin de los mtodos insertar, borrar nodos e imprimir
los datos almacenados en la pila, evala adems si esta vaca.
Se recomienda leer los mtodos de la clase, se debe digitar la clase, los mtodos y la
correspondiente documentacin; tambin ejecutar la aplicacin y observar la salida o
resultados que sta genera
Ing. Jennifer Roco Pillaca De La Cruz
de 8
Gua de laboratorio

Pgina 3

Estructura de Datos IS 212


Ingeniera de Sistemas - UNSCH
package Pilas;
public class Pila {
private Nodo cab;
/**
* constructor
*/
public Pila(){
this.cab=null;
}
/**
* metodo que evalua si la pila esta vacia
* @return true si nodoPila es null o false en caso contrario
*/
private boolean estaVacia(){
return(cab==null);
}
/**
* mtodo que anexa un nodo al tope o cima de la pila
* y actualiza la referencia del tope
* @param n
*/
public void insertarNodo(int n){
if(estaVacia()){
this.cab=new Nodo();
cab.setDato(n);
cab.setEnlace(null);
} else {
Nodo nuevo=new Nodo(n);
nuevo.setEnlace(cab);
cab=nuevo;
}
}
/**
* metodo que borra un nodo y retorna true o false
* segn resultado del proceso
* @return
*/
public boolean borrarNodo(){
if(estaVacia()){
return false;
} else {
Nodo nuevo;
nuevo=cab;
cab=cab.getEnlace();
nuevo.setEnlace(null);
Ing. Jennifer Roco Pillaca De La Cruz
de 8
Gua de laboratorio

Pgina 4

Estructura de Datos IS 212


Ingeniera de Sistemas - UNSCH
return true;
}
}
/**
* mtodo que de impresin de los datos de la pila
* @return retorna cadena con los valores de la pila
*/
public String imprimirPila(){
Nodo p;
p=cab;
String datosPila="";
if(!estaVacia()){
while(p!=null){
datosPila +=" "+p.getDato();
p=p.getEnlace();
}
System.out.println("");
} else {
datosPila=" La pila esta vacia" ;
}
return datosPila;
}
}
Clase Aplicacin Pila
Modela las opciones del men para ingresar, borrar e imprimir elementos de este tipo de
lista.
Se recomienda en esta parte de la actividad del laboratorio, leer el cdigo de esta clase,
digitar la clase, los mtodos y la correspondiente documentacin, revisar que no tenga
errores, ejecutar y observar la salida o resultados que presenta en la aplicacin.
Adems, probar las diferentes opciones del men desde la primera hasta la ltima.
package Pilas;
import javax.swing.JOptionPane;
public class AplicacionPila {
/**
* atributos de la clase
*/
private Pila stack;
private int elemento;
/**
* contructor
*/
public AplicacionPila() {
this.elemento = 0;
this.stack = new Pila();
}
Ing. Jennifer Roco Pillaca De La Cruz
de 8
Gua de laboratorio

Pgina 5

Estructura de Datos IS 212


Ingeniera de Sistemas - UNSCH
/**
* Metodo que presenta las opciones del menu para selecciona una
*/
public void leerMenu(){
int opc = 0;
do{
opc=leerMenu(imprimirMenu());
switch(opc){
case 1: ingresarDato();
break;
case 2: retirarDato();
break;
case 3:imprimirDato();
break;
default: JOptionPane.showMessageDialog(null, "No se realizo ninguna accion\nOpcion
no valida");
break;
}
}while(opc!=4);
}
/**
* metodo que retorna las opciones del menu
* @return string
*/
public String imprimirMenu(){
String menuPila="";
menuPila=
"--------------------------------------------------------\n" +
"PilaJava \n" +
"--------------------------------------------------------\n" +
"1. Ingresar un dato \n" +
"2. Retirar un dato \n" +
"3. Mostrar los datos \n" +
"--------------------------------------------------------\n" +
"4. Salir \n" +
"--------------------------------------------------------\n" +
"Teclea el numero de la accion a relizar:";
return menuPila;
}
/**
* metodo que retorna la opcion del menu leido
* @param menu
* @return numero ingresado
*/
public int leerMenu(String menu)
{
int opc = 0;
Ing. Jennifer Roco Pillaca De La Cruz
de 8
Gua de laboratorio

Pgina 6

Estructura de Datos IS 212


Ingeniera de Sistemas - UNSCH
opc=Integer.parseInt(JOptionPane.showInputDialog(null,menu));
return opc;
}
/**
* mtodo que incrementa la variable elemento de uno en uno
* para que sea anexado a la pila
*/
public void ingresarDato(){
String laPila="";
elemento++;
stack.insertarNodo(elemento);
imprimirDato();
}
public void imprimirDato(){
JOptionPane.showMessageDialog(null,stack.imprimirPila());
}
/**
* metodo que imprime los datos almacenados en la pila
* antes de ser retirado y despus de borrar el dato en la lista
*/
public void retirarDato(){
String mensaje =" ";
String laPila = "Antes de retirar valor\n";
laPila += stack.imprimirPila();
if(stack.borrarNodo()){
elemento--;
mensaje=" \nDato retirado\n";
}
else{
mensaje = " No se retiro dato\n ";
}
//impresin de la pila despus de retirar nodo
laPila +=mensaje;
laPila += "Despus de retirar valor\n";
laPila += stack.imprimirPila();
JOptionPane.showMessageDialog(null,laPila);
}
/**
* metodo de ingreso a la aplicacin de la pila.
* @param args
*/
public static void main(String[] args) {
AplicacionPila unaPila =new AplicacionPila();
unaPila.leerMenu();
}
}
Ing. Jennifer Roco Pillaca De La Cruz
de 8
Gua de laboratorio

Pgina 7

Estructura de Datos IS 212


Ingeniera de Sistemas - UNSCH
1. implementar un mtodo que permita determinar el nmero
de elementos que conforma una pila.
2. Implementar un mtodo que genere una copia en un arreglo
unidimensional de la pila.
3. Implementar un mtodo de bsqueda de datos en una pila.
4. Generar una pila genrica.
5. Realizar mtodo top

Ing. Jennifer Roco Pillaca De La Cruz


de 8
Gua de laboratorio

Pgina 8