martes, 17 de noviembre de 2015

Pilas en JAVA

Pila es parte de los TDA (Tipos Abstractos de Datos). Es una lista ordenada, su forma de acceso a sus elementos es de tipo LIFO (Last In First Out), es decir el último en entrar es el primero en salir, nos permite almacenar y recuperar datos.

Las pilas se caracterizan porque en todo momento se tiene acceso a la parte superior de las pilas, es decir al último objeto apilado (TOS).





Operaciones:
Las dos operaciones principales son: apilar y desapilar.

  • CREAR: se crea la pila vacía.
  • APILAR-PUSH : se introduce un elemento a la pila. 
  • TAMAÑO: regresa el numero de elementos de la pila.
  • DESAPILAR-POP: elimina u elemento a la pila.
  • CIMA: retorna el elemento que esta en la cima de la pila (top)
  • VACÍA(pila): es una función booleana, la cual indica si la pila está llena o vacía.







Los escenarios en los que se trabaja con pilas son variados, pero dos de los mas conocidos son:
  • Pilas que contienen direcciones de retorno
Se da cuando el código llama a un método, la dirección de la 1era instrucción que sigue a la llamada se inserta en la parte superior de la pila de llamadas de métodos del thread actual. Cuando del método llamado ejecuta la instrucción return, se saca la dirección de la parte superior de la pila y la ejecución continua en esa dirección.
una pila recuerda las direcciones de retorno de los métodos llamados.
  • Pilas que contienen todos los parámetros del método llamado y las variables locales
Cuando se llama a un método, la JVM reserva memoria cerca de la dirección de retorno y almacena todos los parámetros del método llamado y las variable locales de ese método.


Ejemplo:

package pilas;

import java.util.Stack;

/**
 *
 * @author michellemorillo
 */
public class Pilas {
    public static void main(String[] args) {
        // TODO code application logic here
        Stack<String> pila = new Stack<String>();
        for(int i=0;i<5;i++){
            pila.push(Integer.toString(i));
        }
        while(!pila.empty())
            System.out.println(pila.pop());
   }

}




EJECUCIÓN DEL PROGRAMA









No hay comentarios:

Publicar un comentario