Pilas Java

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 3

Estructuras de datos: listas enlazadas,

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:

Evaluacin de expresiones en notacin postfija (notacin polaca inversa).


Reconocedores sintcticos de lenguajes independientes del contexto
Implementacin de recursividad.
En un sistema operativo cada proceso tiene un espacio de memoria (pila) para almacenar
valores y llamadas a funciones.
Una pila acotada es una pila limitada a un tamao mximo impuesto en su especificacin.
Por analoga con objetos cotidianos, una operacin apilar equivaldra a colocar un plato sobre
una pila de platos, y una operacin retirar equivaldra a retirarlo.

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.

Pila como tipo abstracto de datos[editar]


A modo de resumen, la pila es un contenedor de nodos y tiene dos operaciones
bsicas: push (o apilar) y pop (o desapilar). Push aade un nodo a la parte superior de la
pila, dejando por debajo el resto de los nodos ya presentes en la pila. Popdevuelve y
elimina el actual nodo superior de la pila. Una metfora que se utiliza con frecuencia es la idea
de una pila de platos dispuesta en una cafetera en un contenedor con un muelle que
mantiene la pila a nivel. En esa serie, solo el primer plato es visible y accesible para el usuario,
todos las dems permanecen ocultos. Como se aaden nuevos platos, cada nuevo plato se
convierte en la parte superior de la pila, permaneciendo escondidos debajo los dems. A
medida que el plato superior se extrae de la pila, el inmediatamente inferior pasa a ocupar la
parte superior de la pila. Dos principios importantes son ilustrados por esta metfora:
nicamente se accede al plato que se encuentra en la parte superior (el ltimo en
depositarse), y el resto de platos de la pila permanecen ocultos. Para extraer un plato distinto
al superior habr que extraer antes los que se encuentran sobre l.
Operaciones[editar]
Habitualmente, junto a las dos operaciones bsicas de apilar y desapilar (push, pop), las pilas
puede implementar otra serie de funciones:

Crear (constructor): crea la pila vaca.


Tamao (size): regresa el nmero de elementos de la pila.
Apilar (push): aade un elemento a la pila.
Desapilar (pop): lee y retira el elemento superior de la pila.
Leer ltimo (top o peek): lee el elemento superior de la pila sin retirarlo.
Vaca (empty): devuelve cierto si la pila est sin elementos o falso en caso de que
contenga alguno.
Una pila puede implementarse fcilmente ya sea mediante una matriz o una lista enlazada. Lo
que identifica a una estructura de datos como una pila en cualquier caso no es su estructura
sino su interfaz: al usuario solo se le permite colocar y extraer datos en el modo que se espera
de una pila y algunas otras operaciones auxiliares.
Otro tipo de estructura de datos es la cola (FIFO, del ingls First In First Out), primero en
entrar, primero en salir.

Pilas Hardware[editar]
Un uso muy comn de las pilas a nivel de arquitectura hardware es la asignacin de memoria.

Arquitectura bsica de una pila[editar]


Una pila tpica es un rea de la memoria de los computadores con un origen fijo, un espacio
para almacenar datos y un puntero. Al principio, su nmero de elementos es cero y la
direccin del puntero coincide con la direccin de origen. Conforme van incorporndose datos,
los elementos contenidos en la pila van incrementndose y el puntero va actualizando su
direccin para hacerla coincidir con el ltimo en incorporase.
Las dos operaciones aplicables a todas las pilas son:

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:

Computer vaqueros MuP21


Harris RTX lnea
Novix NC4016
Muchas pilas basadas en los microprocesadores se utilizan para aplicar el lenguaje de
programacin Forth en el nivel de microcdigo. tambin se utilizaron las pilas como base de
una serie de mainframes y miniordenadores. Esas mquinas fueron llamadas mquina de pila,
el ms famoso es el Burroughs B5000
bibliografia
wikipedia

También podría gustarte