Laboratorio de Pilas 1

8
Estructura de Datos IS 212 Ingeniería de Sistemas - UNSCH LABORATORIO DE PILAS Revisión y trascripción de programas Aplicación de la Pila. El objetivo de esta práctica de laboratorio es construir el proyecto con la implementación de las clases y métodos para ingresar, retirar e imprimir los d Pila. Se trata de una versión académica que parte del siguiente menú de opcion Modelamiento • El elemento base de toda lista son los nodos, se implementa una clase denomi odo. • !as operaciones básicas correspondientes a los requerimientos se encapsulan clase llamada Pila. Estas son" o #ngresar un dato o $etirar un dato o %ostrar los datos • !as opciones del menú se encapsulan en la clase denominada &plicaciónPila Ing. Jennifer Rocío Piaca De !a Cru" P#gina 1 de $ %uía de a&oratorio

description

lllllll

Transcript of Laboratorio de Pilas 1

Estructura de Datos IS 212Ingeniera de Sistemas - UNSCHLABORATORIO 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 datoo Retirar un datoo Mostrar los datos Las opciones del men se encapsulan en la clase denominada AplicacinPila

Diagrama de clases de la Pila

Clase NodoClase 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;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 PilaClase 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

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);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 PilaModela 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();}/*** 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;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 nodolaPila +=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();}}

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 Pgina 1 de 8Gua de laboratorio