Pilas Java
Pilas Java
Pilas Java
pilas y colas.
Una pila (stack en ingls) es una lista ordenada o estructura de datos que permite almacenar
y recuperar datos, el modo de acceso a sus elementos es de tipo LIFO (del ingls Last In, First
Out, ltimo en entrar, primero en salir) . Esta estructura se aplica en multitud de supuestos
en el rea de informtica debido a su simplicidad y capacidad de dar respuesta a numerosos
procesos.
Para el manejo de los datos cuenta con dos operaciones bsicas: apilar (push), que coloca
un objeto en la pila, y su operacin inversa, retirar (o desapilar, pop), que retira el ltimo
elemento apilado.
En cada momento slo se tiene acceso a la parte superior de la pila, es decir, al ltimo objeto
apilado (denominado TOS, Top of Stack en ingls). La operacin retirarpermite la obtencin
de este elemento, que es retirado de la pila permitiendo el acceso al anterior (apilado con
anterioridad), que pasa a ser el ltimo, el nuevo TOS.
Las pilas suelen emplearse en los siguientes contextos:
Historia[editar]
El mtodo de pila para la evaluacin de expresiones fue propuesto en 1955 y dos aos
despus patentado por Friedrich L. Bauer, quin recibi en 1988 el premio "IEEE Computer
Society Pioneer Award" por su trabajo en el desarrollo de dicha estructura de datos.
Pilas Hardware[editar]
Un uso muy comn de las pilas a nivel de arquitectura hardware es la asignacin de memoria.
Apilar: colocar un nuevo dato en la pila. Se lee el puntero para localizar el ltimo
elemento, se incorpora a continuacin de este y se redirecciona el puntero para que
apunte al nuevo dato incorporado.
Desapilar: extraer un dato de la pila. Se localiza el ltimo dato mediante el puntero, se lee
el dato y se redirecciona el puntero al elemento inmediato anterior para que vuelva a
apuntar al ltimo dato de la pila.
Una pila queda definida por su origen (una direccin de memoria), y su capacidad para
almacenar datos. Cuando se intenta leer ms all de su origen (esto es, se intenta leer un
elemento cuando est vaca) o cuando se intenta sobrepasar su capacidad de almacenar
elementos, se produce un error: error por desbordamiento.
Se puede visualizar una pila de datos (independientemente de cmo se almacene en la
memoria) como una serie de datos colocados unos sobre otros (representacin que se
corresponde con el mundo real) o como una sucesin de datos colocados de izquierda a
derecha, unos tras otros.
Una pila ocupara un bloque de celdas de memoria, con una direccin de origen, un espacio
reservado para la acumulacin de datos y un puntero que apunta al ltimo dato incorporado.
La estructura que adopte una pila puede ser muy variada: almacenando datos en direcciones
crecientes o decrecientes, con capacidad de almacenamiento flexible, con punteros que
apunten al ltimo elemento o a la posicin que deber ocupar el prximo elemento que se
incorpore En cualquier caso, quedar definida por su algoritmo: ltimo en entrar, primero en
salir.
Soporte de Hardware[editar]
Muchas CPUs tienen registros que se pueden utilizar como punteros de pila. Algunas, como
Intel x86, tienen instrucciones especiales que implcitan el uso de un registro dedicado a la
tarea de ser un puntero de pila. Otras, como DEC PDP-11 y de la familia 68000
de Motorola tienen que hacer frente a los modos de hacer posible la utilizacin de toda una
serie de registros como un puntero de pila. La serie Intel 80x87 de coprocesadores numricos
tiene un conjunto de registros al que se puede acceder ya sea como una pila o como una serie
de registros numerados. Algunos microcontroladores, por ejemplo algunos PICs, tienen un
fondo fijo de pila que no es directamente accesible. Tambin hay una serie de
microprocesadores que aplican una pila directamente en el hardware: