Professional Documents
Culture Documents
CLASE 4
Pilas (Stack)
Introduccin
En esta unidad se presentaran estructuras de datos lineales con restricciones en cuanto a la
posicin en la cual se pueden llevar a cabo las operaciones de insercin y eliminacin de
componentes.
Pilas
Una pila representa una estructura lineal de datos en la que se puede agregar o quitar
elementos nicamente por uno de los extremos. En consecuencia, los elementos de una pila
se eliminan en orden inverso al que se insertaron, es decir el ltimo elemento que se mete
en la pila es el primero que se saca. Tambin conocida como estructura LIFO (Last Input,
First Output) ltimo en entrar, primero en salir.
Las pilas al igual que los arreglos son consideradas estructuras lineales, ya que sus
componentes ocupan lugares sucesivos en la estructura y cada uno de ellos tiene un nico
sucesor y un nico antecesor, con excepcin del ltimo y del primero.
La pila se define formalmente como una coleccin de datos a los cuales se puede acceder
mediante un extremo, que se conoce generalmente como tope.
Algunos de los ejemplos ms comunes sobre el funcionamiento de pilas son: pila de libros,
pila de platos, pila de latas en supermercado, etc.
Representacin de la pilas
Las pilas no son estructuras fundamentales de datos, es decir no estn definida como tales
en los lenguajes de programacin. Para su programacin se requieren el uso de otras
estructuras de datos, como:
Arreglos
Listas
MAX = 4
TOPE = 3 -> C
1 2 3
C B A
MAX = 4
TOPE = 3 -> A
A
B
C
1
2
3
MAX = 4
TOPE = 3 -> C
C
B
A
1
2
3
MAX = 4
TOPE = 3 -> A
Tambin existen las operaciones auxliales, que permiten verificar el estado de una pila
antes de su insercin (Llena), o eliminacin (Vaca). El primer arroja un error denominado
Desbordamiento, debido a que la misma est repleta en su capacidad y no se pueden
insertar nuevos elementos. El segundo estado arroja el error denominado
Subdesbordamiento, debido a que la misma est vaca y no hay elementos para eliminar.
Fin Elimina
Aplicaciones de pilas
Las pilas son una estructura de datos muy utilizadas en la solucin de diversos tipos de
problemas, en el rea de computacin. Analizaremos en este apartado algunos de los casos
ms representativos de la aplicacin de las mismas.
Llamadas a subprogramas
Tratamiento de expresiones aritmticas
Recursividad
Ordenacin
1
(
2
((
3
((=)
4
((
5
(((
6
((=)
7
(((
8
((=)
9
((=)
10
(=)
La clase Pila
La clase pila tiene atributos y mtodos. Los atributos son la coleccin de elementos y el
TOPE. Los mtodos, por otra parte, son todas aquellas operaciones analizadas en la seccin
anterior, Pila_Vacia, Pila_Llena, Inserta_Pila, Elimina_Pila.
Algunos lenguajes de programacin como por ejemplo los OOP, orientados por objetos
tiene predefinidas determinadas estructuras de datos como la clase pila, donde es
necesario declarar una nueva estructura que haga referencia a la clase predefinida para
poder acceder y utilizar a sus atributos y mtodos.
Ejemplo 6: Clase Abstracta Pila
TOPE numrico
Datos = Arreglo[1..Max]
Crea_Pila
Pila_Vacia()
Pila_Llena()
Tope_Pila()
Inserta_Pila()
Elimina_Pila()
funcionTope_Pila (P)
si P.Pila_Vacia = Verdadero
error de Desbordamientos o - Pila Vaca
Devolver 0
sino
devolver P.Tope
fin si
fin funcion
procedimiento Inserta_Pila(Dato, P)
si P.Pila_Llena = Verdadero
error Desborda miento o Pila llena
sino
P.Tope = P.Tope + 1
P[Tope] = Dato
Fin Procedimiento
Procedimiento Elimina_Pila ( P, Dato )
Si P.Pila_Vacia = Verdadero
error Subdesbordamiento o Pila Vaca
sino
Dato = P[Tope]
P.Tope=P.Tope - 1
fin si
fin procedimiento
Ejemplo 8: Implementacin de clase Pila a base de Vectores con Java
// OPERACIONES PBLICAS
// void apilar(x) ->Inserta x
// voiddesapilar() ->Elimina el ltimo elemento insertado
// Objectcima() ->Devuelve el ltimo elemento insertado
// booleanesVacia() ->Devuelve true si vaca, sino false
// void vaciar() ->Elimina todos los elementos
// ERRORES: cima o desapilar sobre la pila vaca