Pila Estatica213213312132123Pila Estatica213213312132123312Pila Estatica213213312132123312Pila...

19
CONCEPTO DE PILA

description

Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312Pila Estatica213213312132123312

Transcript of Pila Estatica213213312132123Pila Estatica213213312132123312Pila Estatica213213312132123312Pila...

CONCEPTO DE PILA

CONCEPTO DE PILAUna pila (stack) es una coleccin de elementos a los que solo se puede acceder por un nico lugar o extremo de la pila. Los elementos se aaden o quitan de la pila slo por su parte superior (cima). Este es el caso de una pila de platos, una pila de libros, etc.Las entradas de la pila deben ser eliminadas en el orden inverso al que se situaron en la misma. Debido a su propiedad especifica ultimo en entrar, primero en salir, se conoce a las pilas como estructuras de datos LIFO (last in, first out).Las operaciones usuales en la pila son Insertar y Quitar. La operacin Insertar (push) aade un elemento en la cima de la pila y la operacin Quitar (pop) elimina o saca un elemento de la pila. La figura muestra una secuencia de operaciones Insertar y Quitar. El ultimo elemento aadido a la pila es el primero que se quita de la pila.

La pila se puede implementar mediante arrays, en cuyo caso su dimensin o magnitud es fija, y mediante listas enlazadas, en cuyo caso se utiliza memoria dinmica y no existe limitacin en su tamao, excepto la memoria del ordenador.

Una pila puede estar vaca (no tener elementos) o llena (en el caso de tener tamao fijo), si no caben ms elementos en la pila.Operaciones en una pilaLas operaciones que sirven para definir una pila y poder manipular su contenido son las siguientes (no todas ellas se implementan al definir una pila):

Insertar (Push)Quitar (Pop)Pila vacaPila LlenaInsertar un dato en la pilaSacar un dato de la pilaComprueba si la pila no tiene elementosComprueba si esta llena de elementosEl Tipo Pila Implementado Con ArraysLa Clase Pila implementada con arrays incluye una lista (array) y un ndice a la cima de la pila, adems de una constante con el mximo nmero de elementosLos algoritmos de introducir insertar (push) y sacar (pop) datos de la pila son:Insertar (Push)1.- Verificar si la pila no esta llena.2.- Incrementar en 1 el puntero de la pila.3.- Almacenar elemento en la posicin del puntero de la pila.Quitar (Pop)1.- Si la pila no est vaca.2.- Obtener el elemento de la posicin del puntero de la pila3.- Decrementar en 1 el puntero de la pila. En el caso de que el array que define la pila tenga TAMPILA elementos, las posiciones del array, es decir, el ndice o puntero de la pila, estarn comprendidas en el rango 0 a TAMPILA-1 y en una pila vaca el puntero de la pila apunta a -1, ya que 0, ser el ndice del primer elemento.Especificaciones Lgicas de la Clase Pila1.- Datos de la pila (tipo de dato, o para generalizar de tipo (Object).

2.- Verifica que la pila no est llena antes de intentar insertar o poner (push) un elemento en la pila; verifica que una pila no est vaca antes de intentar sacar (pop) un elemento de la pila. Si estas precondiciones no se cumplen se debe visualizar un mensaje de error y el programa debe terminar.3.- PilaVaca devuelve verdadero si la pila est vaca y falso en caso contraro.4.- PilaLlena devuelve verdadero si la pila est llena y falso en caso contrario. Implementacin en Lenguaje Java utilizando memoria estticapublic class PilaEstatica {

private static final int TAMPILA=49; private int cima; private final int[]pila;

public PilaEstatica () { cima=-1; pila= new int [TAMPILA]; } public void insertar (int elemento) { if(pilaLlena()) System.out.println("desbordamiento de pila"); else { cima ++; pila[cima]=elemento; } }

public int sacar() { int aux=-1; if(pilaVacia()) { System.out.println("no hay elementos en la pila"); return aux; } else { aux=pila[cima]; cima--; return aux; } } public boolean pilaVacia() { return cima==-1; }

public boolean pilaLlena() { return cima==TAMPILA-1; }

public void visualizar() { if (cima==-1) System.out.println("La pila esta vacia"); else for (int i=cima;i>=0;i--) { if (i==cima) System.out.println("Cima-> ["+i+"] : "+pila[i]); else if (i==0) System.out.println("Fondo->["+i+"] : "+pila[i]); else System.out.println(" ["+i+"] : "+pila[i]); } }

}Ejercicios de aplicacinEJERCICIO 1:Implemente en lenguaje Java una aplicacin que utilice los mtodos de la clase PILAESTATICA (meter, sacar, pilallena, pilavaca, visualizar).La aplicacin insertar 10 valores en la Pila1. stos sern ingresados por teclado por el usuario. Una vez completa la Pila1, copiarlos a la Pila2 pero en orden invertido. El dato que estaba al fondo de la Pila1 ahora estar en la cima de la Pila 2.Considere que despus de la ejecucin del mtodo, Pila1 debe quedar como estaba originalmente, es decir no quedar vaca.La nica pila que existe con datos es la pila1. Puede crear las adicionales que sean necesarias para realizar la operacin. No puede utilizar la variable TAMPILA.EJERCICIO 2:

Se tiene una pila P en la cual se han almacenado valores que pueden estar o no repetidos. Elabore una aplicacin la cual permite que el usuario ingrese por teclado el valor X para el cual desea encontrar cuntas veces se encuentra en la Pila P.Suponga que el nico acceso a la Pila es a travs de las operaciones implementadas en la Clase PilaEstatica (meter, sacar, pilallena, pilavacia, visualizar). No puede usar directamente la variable TAMPILA.Al terminar la ejecucin deber desplegar la Pila P sin modificaciones adems del nmero de veces que aparece el elemento X en ella.

EJERCICIO 3:

Se tiene una pila P en la cual se han almacenado valores que pueden estar o no repetidos. Elabore una aplicacin la cual permite que el usuario ingrese por teclado 2 valores: el valor VIEJO que desea sustituir en la pila por el valor NUEVO.

Suponga que el nico acceso a la Pila es a travs de las operaciones implementadas en la Clase PilaEstatica (meter, sacar, pilallena, pilavacia, visualizar). No puede usar directamente la variable TAMPILA.

Al terminar la ejecucin deber desplegar la Pila P en el que se ha reemplazado el valor VIEJO por el NUEVO tantas veces como aparezca. Si VIEJO no se encuentra en la pila, la pila no tendr modificaciones.