Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pilas
Pilas
Pilas
4 Pilas
4.1 Descripcin del TDA Pila. 4.2 Especificacin del TDA Pila.
Una pila es un caso especial de lista en la cual todas las inserciones y supresiones tienen lugar en un extremo determinado llamado tope.
A las pilas se les llama tambin listas LIFO (last-in first-out) o listas primero en entrar, primero en salir. Al igual que ocurra con el TDA Cola, en el TDA Pila tampoco se definen operaciones de posicionamiento en la pila. Esto es debido a que todas las operaciones de acceso se realizan en la misma posicin, el tope de la pila.
CREA. Crea una pila vaca. VACIA. Devuelve un valor cierto si la pila est vaca, y falso en caso contrario. TOPE. Devuelve el elemento situado el tope de la pila, sin extraerlo.
Pila = TDA con operaciones crea, vacia, tope, push, pop. DESCRIPCIN:
Los valores del TDA Pila son pilas de elementos del tipo Elemento. Las pilas son mutables: push y pop aaden y eliminan elementos en la pila respectivamente.
OPERACIONES:
push(P:Pila; E:Elemento)
modifica: P efecto: Aade el elemento E a la pila P, quedando ste situado en el tope.
pop(P:Pila)
requerimientos: La pila P es no vaca. modifica: P efecto: Suprime el elemento situado en el tope de la pila
crea Pila vacia(Pila) booleano tope(Pila) Elemento push(Pila,Elemento) Pila pop(Pila) Pila
Semntica: PPila,
EElemento:
vacia(crea) cierto vacia(push(P,E)) falso tope(crea) error tope(push(P,E)) E pop(crea) error pop(push(P,E)) P
class ColaUtil { // mtodos de la clase ColaUtil static public Cola invertir(Cola cola) { try { Pila pilaAux = new Pila(); Cola colaAux = duplicar(cola); while(!colaAux.vacia()) { Object e = colaAux.primero(); colaAux.suprime(); pilaAux.push(e); }
En esta seccin mostraremos tres implementaciones alternativas para el TDA Pila: 1. Implementacin basada en el TDA Lista; consiste en definir una Pila utilizando una lista 2. Implementacin con vectores; utiliza un array para almacenar los elementos de la Pila 3. Implementacin con apuntadores con representacin con simple enlace
a3 a2 a1
tope = max-3
public Object tope() throws PilaVaciaException { if (vacia()) throw new PilaVaciaException(); return elementos[tope]; } public void push(Object elemento) { tope--; elementos[tope]=elemento; } public void pop() throws PilaVaciaException{ if (vacia()) throw new PilaVaciaException(); tope++; } } // fin class Pila
De nuevo, los criterios que describimos en un captulo anterior para la comparacin de las implementaciones de listas son tambin vlidos para las implementaciones de pilas. La eleccin de una implementacin u otra depender de los requerimientos de la aplicacin en la que se use. Es posible obtener representaciones para pilas que permiten operaciones eficientes que se realizan en tiempos de ejecucin constantes.