Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
PILAS DEFINICIÓN DE UNA PILA Es una estructura de datos (TDA) caracterizado por: Es lineal Todos los elementos tienen el mismo tipo de dato Se tiene acceso solo al extremo denominado CIMA: Se puede ver el elemento de la CIMA Se puede eliminar el elemento de la CIMA Se puede insertar un nuevo elemento por la CIMA OPERACIONES PERMITIDAS EN UNA PILA VER EL ELEMENTO DE LA CIMA ELIMINAR EL ELEMENTO DE LA CIMA INSERTAR UN ELEMENTO POR LA CIMA VERIFICAR SI LA PILA ESTÁ VACÍA VERIFICAR SI LA PILA ESTÁ LLENA (SI PUEDE LLENARSE) IMPLEMENTACIÓN DE UNA PILA UNA PILA PUEDE REPRESENTARSE MEDIANTE: UN VECTOR UNA LISTA ENLAZADA IMPLEMENTACION DE UNA PILA CON UN VECTOR 20 5 10 LA CLASE PILA TIENE DOS CAMPOS: 1 VECTOR ELEM, DONDE ESTAN LOS ELEMENTOS DE LA PILA ELEM 1 2 3 4 . . . . . MAX 2 CIMA (ENTERO) QUE CONTIENE LA POSICIÓN DEL ELEMENTO DE LA CIMA CIMA 3 Definir una Pila de objetos de la clase Vehículo Leer N elementos Mostrar Contar el número de vehículos de una marca dada PILA DE OBJETOS Vehiculo placa marca Modelo leer() mostrar() Operaciones leer(p) mostrar(p) contarMarca(p) class Vehiculo { String placa,marca; int modelo; public Vehiculo() {placa=null; marca=null; modelo=0; } public void leer() { System.out.print("placa="); placa=Leer.dato(); System.out.print("marca="); marca=Leer.dato(); System.out.print("modelo="); modelo=Leer.datoInt(); } public void mostrar() { System.out.print("placa="+placa+ "\n marca="+marca +"\n modelo="+modelo); } } CLASE PILA class Pila { // campos int cima; Vehiculo[] elem; final int MAX=50; // constructor public Pila () { cima=0; elem = new Vehiculo[MAX + 1]; } // verifica si la pila está vacía public boolean pilaVacia() { return cima==0; } CLASE PILA // verifica si la pila está llena public boolean pilaLlena() { return cima==MAX; } // ver el elemento de la CIMA public Vehiculo ver () { return elem[cima]; } // eliminar el elemento de la CIMA public void eliminar() { if (!pilaVacia() ) {cima = cima - 1; } } // insertar un elemento por la CIMA public void insertar (Vehiculo x) { if (!pilaLlena() ) { cima = cima + 1; elem[cima] = x; } } } CLASE OPERACIONES class Operaciones { // INSERTAR N ELEMENTOS public Pila insertarN(Pila p) { System.out.print("Nº de elementos= "); int n=Leer.datoInt(); Vehiculo d; for(int c=1;c<=n && !p.pilaLlena();++c) {System.out.print("Dato"+c+"= "); d=new Vehiculo(); d.leer(); p.insertar(d); } return p; } CLASE OPERACIONES // MOSTRAR public void mostrar(Pila p) { Pila paux=new Pila(); // SE CREA UNA PILA AUXILIAR VACIA: paux Vehiculo d; while(!p.pilaVacia()) { // SE RECUPERA EL ELEMENTO DE LA CIMA DE LA PILA p Y SE LO MUESTRA d=p.ver(); d.mostrar(); p.eliminar(); // SE ELIMINA EL ELEMENTO DE LA CIMA DE p paux.insertar(d); // SE INSERTA EN LA CIMA DE paux EL ELEMENTO ELIMNADO DE p } // AL FINAL LA PILA p QUEDA VACIA Y paux CON LOS ELEMENTOS DE p, INVERTIDOS CLASE OPERACIONES // SE VACIAN LOS ELEMENTOS DE paux EN p, QUEDANDO COMO ESTABAN ORIGINALMENTE while(!paux.pilaVacia()) {d=paux.ver(); // SE RECUPERA EL ELEMENTO DE LA CIMA DE LA PILA paux paux.eliminar(); // SE ELIMINA EL ELEMENTO DE LA CIMA DE paux p.insertar(d); // SE INSERTA EN LA CIMA DE p EL ELEMENTO ELIMNADO DE paux } } CLASE OPERACIONES // CONTAR EL NÚMERO DE VEHÍCULOS DE UNA MARCA DADA public void contarMarca(Pila p) { System.out.println("marca="); String ma=Leer.dato(); Pila paux=new Pila(); // SE CREA UNA PILA AUXILIAR VACIA: paux Vehiculo d; int c=0; while(!p.pilaVacia()) { // SE RECUPERA EL ELEMENTO DE LA CIMA DE LA PILA p SE CUENTA d=p.ver(); if ( ma.compareTo(d) ==0 ) ++c; p.eliminar(); // SE ELIMINA EL ELEMENTO DE LA CIMA DE p paux.insertar(d); // SE INSERTA EN LA CIMA DE paux EL ELEMENTO ELIMNADO DE p } // LA PILA p QUEDA VACIA Y paux CON LOS ELEMENTOS DE p INVERTIDOS CLASE OPERACIONES // SE VACIAN LOS ELEMENTOS DE paux EN p, QUEDANDO COMO ESTABAN ORIGINALMENTE while(!paux.pilaVacia()) {d=paux.ver(); // SE RECUPERA EL ELEMENTO DE LA CIMA DE LA PILA paux paux.eliminar(); // SE ELIMINA EL ELEMENTO DE LA CIMA DE paux p.insertar(d); // SE INSERTA EN LA CIMA DE p EL ELEMENTO ELIMNADO DE paux } System.out.println(“No. Vehículos de la marca “+ma+” = “+c); } } public class principal{ public static void main (String[] args) { Operaciones op=new Operaciones(); Pila pil = new Pila ( ) ; op.insertarN (pil); op.mostrar (pil); op.contarMarca( pil); } } PROBLEMAS 2. DEFINIR UNA PILA DE OBJETOS DE LA CLASE Vehículo INSERTAR N NODOS MOSTRAR CONTAR EL NUMERO DE VEHICULOS QUE TIENEN EL MODELO MÁS ANTIGUO ELIMINAR LOS VEHICULOS DE UNA MARCA DADA CON MODELO ANTERIOR A 1990 INSERTAR UN NUEVO VEHÍCULO DESPUÉS DE UN VEHÍCULO CON UNA PLACA DADA
Compartir