PILAS
CONCEPTO DE PILA
Una pila (stack) es una
coleccin ordenada de
elementos a los cuales
slo se puede acceder
por un nico lugar o
extremo de la pila.
Los elementos se aaden
o se quitan (borran) de la
pila slo por su parte
superior (cima).
Las pilas se conocen tambin como estructuras LIFO
(Last-in, first-out, ltimo en entrar primero en salir).
Las pilas se utilizan en compiladores, sistemas operativos
y programas de aplicaciones.
Una aplicacin interesante es la evaluacin de
expresiones aritmticas
Las entradas de la pila
deben ser eliminadas
en el orden inverso al
que se situaron en la
misma.
Las operaciones usuales en la pila son Insertar y Quitar.
La operacin Insertar La operacin Quitar
(push) aade un
(pop) elimina o saca un
elemento en la cima elemento de la pila.
de la pila.
La pila se puede implementar de las siguientes formas
Guardando los elementos en un array, en cuyo caso su
dimensin o longitud es fija.
Utilizar un vector para almacenar los elementos
Otra forma de implementacin consiste en construir una lista
enlazada.
De modo que cada elemento de la pila
forma un nodo de la lista.
La lista crece o decrece segn se aaden o
se extraen, respectivamente, elementos de
la pila; sta es una representacin dinmica,
y no existe limitacin en su tamao excepto
la memoria de la comutadora.
Una pila puede estar vaca (no tiene elementos) o llena (en la
representacin con un array arreglo, si se ha llegado al ltimo
elemento).
Si un programa intenta sacar un elemento de una pila vaca, se
producir un error, una excepcin, debido a que esa operacin es
imposible;
Por el contrario, si un programa intenta poner un elemento en
una pila llena, se produce un error, una excepcin, de
desbordamiento (overflow).
Para evitar estas situaciones se disean mtodos que
comprueban si la pila est llena o vaca.
PILA IMPLEMENTADA CON ARRAYS
Insertar (push)
Quitar (pop)
1. Verificar si la pila no est llena.
2. Incrementar en 1 el ndice de la pila.
3. Almacenar elemento en la posicin del ndice de la pila.
1. Verificar si la pila no est vaca.
2. Leer el elemento de la posicin del ndice de la pila.
3. Decrementar en 1 el puntero de la pila.
PILA IMPLEMENT ADO COMO UN A LISTA
ENLAZADA
Esta realizacin tiene la ventaja de que el tamao se ajusta
exactamente al nmero de elementos de la pila. Sin embargo, para
cada elemento es necesaria ms memoria ya que hay que guardar
el campo de enlace entre nodos consecutivos
PILA IMPLEMENT ADO COMO UN A LISTA
ENLAZADA
class NodoPila
class PilaLista
pilaVacia()
push(tipo elemento)
quitar()
cimaPila()
limpiarPila()
Stack
La clase Stack es una clase de las llamadas
de tipo LIFO (Last In - First Out, o
ltimo en entrar - primero en salir).
Las operaciones bsicas son :
push (que introduce un elemento en la pila).
pop (que saca un elemento de la pila).
peek (consulta el primer elemento de la cima de la pila).
empty (que comprueba si la pila est vaca)
search (que busca un determinado elemento dentro de la pila y devuelve
su posicin dentro de ella).