Professional Documents
Culture Documents
Denicin
PILA
1
cima
Conjunto dinmico de tipo LIFO (Last Input First Output ): el ltimo elemento que entra al conjunto es el primero que sale. No es posible acceder a elementos que entraron antes que el ltimo.
Interfaces bsicos
procedimiento init (ref s: PILA)
Interfaces bsicos
procedimiento init (ref s: PILA) inicializa la variable s de tipo PILA realiza las reservas dinmicas de memoria necesarias como resultado, se tendr una pila s vaca init (s): primera accin a realizar sobre s
Interfaces bsicos
procedimiento init (ref s: PILA) funcin push(ref s: PILA, x: ELEMENTO): booleano
Interfaces bsicos
procedimiento init (ref s: PILA) funcin push(ref s: PILA, x: ELEMENTO): booleano aade el elemento x a la pila s devuelve: TRUE FALSE si la operacin se realiza con xito si la pila s est llena
Interfaces bsicos
procedimiento init (ref s: PILA) funcin push(ref s: PILA, x: ELEMENTO): booleano
1
cima
Interfaces bsicos
procedimiento init (ref s: PILA) funcin push(ref s: PILA, x: ELEMENTO): booleano
1 1
cima
Interfaces bsicos
procedimiento init (ref s: PILA) funcin push(ref s: PILA, x: ELEMENTO): booleano funcin pop(ref s: PILA): ELEMENTO
Interfaces bsicos
procedimiento init (ref s: PILA) funcin push(ref s: PILA, x: ELEMENTO): booleano funcin pop(ref s: PILA): ELEMENTO extrae el elemento que ocupa la cima de la pila s devuelve el valor de dicho elemento como resultado, la pila s tendr un elemento menos precondicin: s no vaca
Interfaces bsicos
procedimiento init (ref s: PILA) funcin push(ref s: PILA, x: ELEMENTO): booleano funcin pop(ref s: PILA): ELEMENTO
1
cima
Interfaces bsicos
procedimiento init (ref s: PILA) funcin push(ref s: PILA, x: ELEMENTO): booleano funcin pop(ref s: PILA): ELEMENTO
1 1
cima
cima
Interfaces bsicos
procedimiento init (ref s: PILA) funcin push(ref s: PILA, x: ELEMENTO): booleano funcin pop(ref s: PILA): ELEMENTO funcin empty (s: PILA): booleano
Interfaces bsicos
procedimiento init (ref s: PILA) funcin push(ref s: PILA, x: ELEMENTO): booleano funcin pop(ref s: PILA): ELEMENTO funcin empty (s: PILA): booleano devuelve: TRUE FALSE si la pila s est vaca en caso contrario
Interfaces bsicos
procedimiento init (ref s: PILA) funcin push(ref s: PILA, x: ELEMENTO): booleano funcin pop(ref s: PILA): ELEMENTO funcin empty (s: PILA): booleano
1
cima
Interfaces bsicos
procedimiento init (ref s: PILA) funcin push(ref s: PILA, x: ELEMENTO): booleano funcin pop(ref s: PILA): ELEMENTO funcin empty (s: PILA): booleano
1
MAX MAX + 1
Algoritmos y Estructuras de Datos
cima
Departamento de Electricidad y Electr onica (UPV/EHU) TAD Pila p.3/28
Interfaces secundarios
funcin top(s: PILA): ELEMENTO
Interfaces secundarios
funcin top(s: PILA): ELEMENTO devuelve el valor del elemento que ocupa la cima de la pila s precondicin: pila no vaca cmo podramos implementar esta funcin?
Interfaces secundarios
funcin top(s: PILA): ELEMENTO procedimiento clear (ref s: PILA)
Interfaces secundarios
funcin top(s: PILA): ELEMENTO procedimiento clear (ref s: PILA) vaca completamente la pila s cmo podramos implementar esta funcin?
Indice cima
Posicin del ltimo elemento insertado
MAX 4 MAX 3 MAX 2 MAX 1 MAX
cima
Indice cima
Posicin del ltimo elemento insertado Pila vaca: cima = MAX + 1
MAX MAX + 1
cima
Indice cima
Posicin del ltimo elemento insertado Pila vaca: cima = MAX + 1 Pila llena: cima = 1
Indice cima
Posicin del siguiente hueco
cima
Indice cima
Posicin del siguiente hueco Pila vaca: cima = MAX
cima
MAX
Indice cima
Posicin del siguiente hueco
Base de la pila: ltimo elemento de la lista Cima de la pila: primer elemento de la lista Insertar y borrar: slo en cabeza de lista
Base NULO
ab+c*
notacin postfija
(a+b)*c
notacin infija
ab+c*
notacin postfija
(a+b)*c
notacin infija
Mtodo
item = operando se introduce en la pila item = operador: se sacan de la pila los dos ltimos operandos se calcula el resultado de la operacin se introduce el resultado en la pila finalmente, en la pila queda el resultado de evaluar la expresin postfija
Algoritmos y Estructuras de Datos Departamento de Electricidad y Electr onica (UPV/EHU) TAD Pila p.16/28
Ejemplo
Entrada 4873+*2/+ Pila
Ejemplo
Entrada 4873+*2/+ 873+*2/+ Pila 4
Ejemplo
Entrada 4873+*2/+ 873+*2/+ 73+*2/+ Pila 4 84
Ejemplo
Entrada 4873+*2/+ 873+*2/+ 73+*2/+ 3+*2/+ Pila 4 84 784
Ejemplo
Entrada 4873+*2/+ 873+*2/+ 73+*2/+ 3+*2/+ +*2/+ Pila 4 84 784 3784
Ejemplo
Entrada 4873+*2/+ 873+*2/+ 73+*2/+ 3+*2/+ +*2/+ *2/+ Pila 4 84 784 3784 10 8 4
Ejemplo
Entrada 4873+*2/+ 873+*2/+ 73+*2/+ 3+*2/+ +*2/+ *2/+ 2/+ Pila 4 84 784 3784 10 8 4 80 4
Ejemplo
Entrada 4873+*2/+ 873+*2/+ 73+*2/+ 3+*2/+ +*2/+ *2/+ 2/+ /+ Pila 4 84 784 3784 10 8 4 80 4 2 80 4
Ejemplo
Entrada 4873+*2/+ 873+*2/+ 73+*2/+ 3+*2/+ +*2/+ *2/+ 2/+ /+ + Pila 4 84 784 3784 10 8 4 80 4 2 80 4 40 4
Ejemplo
Entrada 4873+*2/+ 873+*2/+ 73+*2/+ 3+*2/+ +*2/+ *2/+ 2/+ /+ + Pila 4 84 784 3784 10 8 4 80 4 2 80 4 40 4 44
Departamento de Electricidad y Electr onica (UPV/EHU) TAD Pila p.17/28
Mtodo
item = operando
se lleva a la salida
Mtodo
item = operando item = operador precedencia de operadores: *, /, +, se llevan operadores de la pila a la salida hasta que la pila se vaca, o hasta que se encuentra un operador de menor precedencia se introduce en la pila el operador visto a la entrada
Mtodo
item = operando item = operador tratamiento especco de los parntesis
Mtodo
item = operando item = operador tratamiento especco de los parntesis cuando se hayan procesado todos los smbolos de la entrada, se llevan a la salida todos los operadores que queden en la pila
Ejemplo
Entrada
6*(4+9)+5/2
Salida
Pila
Ejemplo
Entrada
6*(4+9)+5/2 *(4+9)+5/2
Salida
6
Pila
Ejemplo
Entrada
6*(4+9)+5/2 *(4+9)+5/2 (4+9)+5/2
Salida
6 6
Pila
Ejemplo
Entrada
6*(4+9)+5/2 *(4+9)+5/2 (4+9)+5/2 4+9)+5/2
Salida
6 6 6
Pila
* (*
Ejemplo
Entrada
6*(4+9)+5/2 *(4+9)+5/2 (4+9)+5/2 4+9)+5/2 +9)+5/2
Salida
6 6 6 64
Pila
* (* (*
Ejemplo
Entrada
6*(4+9)+5/2 *(4+9)+5/2 (4+9)+5/2 4+9)+5/2 +9)+5/2 9)+5/2
Salida
6 6 6 64 64
Pila
* (* (* +(*
Ejemplo
Entrada
6*(4+9)+5/2 *(4+9)+5/2 (4+9)+5/2 4+9)+5/2 +9)+5/2 9)+5/2 )+5/2
Salida
6 6 6 64 64 649
Pila
* (* (* +(* +(*
Ejemplo
Entrada
6*(4+9)+5/2 *(4+9)+5/2 (4+9)+5/2 4+9)+5/2 +9)+5/2 9)+5/2 )+5/2 +5/2
Salida
6 6 6 64 64 649 649+
Pila
* (* (* +(* +(* *
Ejemplo
Entrada
6*(4+9)+5/2 *(4+9)+5/2 (4+9)+5/2 4+9)+5/2 +9)+5/2 9)+5/2 )+5/2 +5/2 5/2
Salida
6 6 6 64 64 649 649+ 649+*
Pila
* (* (* +(* +(* * +
Ejemplo
Entrada
6*(4+9)+5/2 *(4+9)+5/2 (4+9)+5/2 4+9)+5/2 +9)+5/2 9)+5/2 )+5/2 +5/2 5/2 /2
Salida
6 6 6 64 64 649 649+ 649+* 649+*5
Pila
* (* (* +(* +(* * + +
Ejemplo
Entrada
6*(4+9)+5/2 *(4+9)+5/2 (4+9)+5/2 4+9)+5/2 +9)+5/2 9)+5/2 )+5/2 +5/2 5/2 /2 2
Algoritmos y Estructuras de Datos
Salida
6 6 6 64 64 649 649+ 649+* 649+*5 649+*5
Departamento de Electricidad y Electr onica (UPV/EHU)
Pila
* (* (* +(* +(* * + + /+
TAD Pila p.19/28
Ejemplo
Entrada
6*(4+9)+5/2 *(4+9)+5/2 (4+9)+5/2 4+9)+5/2 +9)+5/2 9)+5/2 )+5/2 +5/2 5/2 /2 2
Algoritmos y Estructuras de Datos
Salida
6 6 6 64 64 649 649+ 649+* 649+*5 649+*5 649+*52/+
Departamento de Electricidad y Electr onica (UPV/EHU)
Pila
* (* (* +(* +(* * + + /+
TAD Pila p.19/28
Ejercicios
1. Escrbase un algoritmo para calcular ab de forma no recursiva utilizando el TAD Pila. 2. Escrbase un algoritmo para calcular ab de forma no recursiva sin utilizar el TAD Pila. 3. Escrbase un algoritmo no recursivo para resolver el problema de las torres de Hanoi utilizando el TAD Pila. 4. Escrbase un algoritmo para recorrer exactamente una vez cada una de las 64 casillas del tablero de ajedrez, utilizando los movimientos del caballo. La solucin a este problema deber utilizar el TAD Pila para almacenar la secuencia de casillas recorridas en un camino parcial de longitud t: St = {(ik , jk )|k = 1, 2, . . . , t}.
Algoritmos y Estructuras de Datos Departamento de Electricidad y Electr onica (UPV/EHU) TAD Pila p.20/28
Volver
Algoritmos y Estructuras de Datos Departamento de Electricidad y Electr onica (UPV/EHU) TAD Pila p.22/28
Precondicin de pop()
Las funciones pop() y top() tienen como precondicin que la pila no est vaca. Antes de llamarlas hay que comprobar dicha precondicin:
si NOT empty(s) entonces x pop(s) fin_si Volver
Precondicin de top()
Las funciones pop() y top() tienen como precondicin que la pila no est vaca. Antes de llamarlas hay que comprobar dicha precondicin:
si NOT empty(s) entonces x top(s) fin_si Volver
Precondicin de pop()
Las funciones pop() y top() tienen como precondicin que la pila no est vaca. Antes de llamarlas hay que comprobar dicha precondicin:
si NOT empty(s) entonces x pop(s) fin_si Volver
Precondicin de top()
Las funciones pop() y top() tienen como precondicin que la pila no est vaca. Antes de llamarlas hay que comprobar dicha precondicin:
si NOT empty(s) entonces x top(s) fin_si Volver
Precondicin de pop()
Las funciones pop() y top() tienen como precondicin que la pila no est vaca. Antes de llamarlas hay que comprobar dicha precondicin:
si NOT empty(s) entonces x pop(s) fin_si Volver
Precondicin de top()
Las funciones pop() y top() tienen como precondicin que la pila no est vaca. Antes de llamarlas hay que comprobar dicha precondicin:
si NOT empty(s) entonces x top(s) fin_si Volver