You are on page 1of 88

TAD Pila

Denicin, implementacin y aplicaciones

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.1/28

Denicin
PILA
1

MAX 4 MAX 3 MAX 2 MAX 1 MAX

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.

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.2/28

Interfaces bsicos
procedimiento init (ref s: PILA)

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.3/28

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

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.3/28

Interfaces bsicos
procedimiento init (ref s: PILA) funcin push(ref s: PILA, x: ELEMENTO): booleano

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.3/28

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

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.3/28

Interfaces bsicos
procedimiento init (ref s: PILA) funcin push(ref s: PILA, x: ELEMENTO): booleano
1

MAX 4 MAX 3 MAX 2 MAX 1 MAX

cima

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.3/28

Interfaces bsicos
procedimiento init (ref s: PILA) funcin push(ref s: PILA, x: ELEMENTO): booleano
1 1

MAX 5 MAX 4 MAX 3 MAX 2 MAX 1 MAX


cima

cima

MAX 4 MAX 3 MAX 2 MAX 1 MAX

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.3/28

Interfaces bsicos
procedimiento init (ref s: PILA) funcin push(ref s: PILA, x: ELEMENTO): booleano funcin pop(ref s: PILA): ELEMENTO

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.3/28

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

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.3/28

Interfaces bsicos
procedimiento init (ref s: PILA) funcin push(ref s: PILA, x: ELEMENTO): booleano funcin pop(ref s: PILA): ELEMENTO
1

MAX 5 MAX 4 MAX 3 MAX 2 MAX 1 MAX


Algoritmos y Estructuras de Datos

cima

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.3/28

Interfaces bsicos
procedimiento init (ref s: PILA) funcin push(ref s: PILA, x: ELEMENTO): booleano funcin pop(ref s: PILA): ELEMENTO
1 1

MAX 5 MAX 4 MAX 3 MAX 2 MAX 1 MAX


Algoritmos y Estructuras de Datos

cima

MAX 4 MAX 3 MAX 2 MAX 1 MAX


Departamento de Electricidad y Electr onica (UPV/EHU)

cima

TAD Pila p.3/28

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

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.3/28

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

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.3/28

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 4 MAX 3 MAX 2 MAX 1 MAX


Algoritmos y Estructuras de Datos

cima

empty (s) FALSE

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.3/28

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

empty (s) TRUE

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

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.4/28

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?

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.4/28

Interfaces secundarios
funcin top(s: PILA): ELEMENTO procedimiento clear (ref s: PILA)

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.4/28

Interfaces secundarios
funcin top(s: PILA): ELEMENTO procedimiento clear (ref s: PILA) vaca completamente la pila s cmo podramos implementar esta funcin?

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.4/28

Implementacin basada en arrays (1)

Base de la pila ltima posicin del array: MAX


MAX 4 MAX 3 MAX 2 MAX 1 MAX
cima

la pila crece hacia arriba, con ndices cada vez ms pequeos

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.5/28

Implementacin basada en arrays (2)


1

Indice cima
Posicin del ltimo elemento insertado
MAX 4 MAX 3 MAX 2 MAX 1 MAX
cima

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.6/28

Implementacin basada en arrays (2)


1

Indice cima
Posicin del ltimo elemento insertado Pila vaca: cima = MAX + 1
MAX MAX + 1
cima

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.6/28

Implementacin basada en arrays (2)


1
cima

Indice cima
Posicin del ltimo elemento insertado Pila vaca: cima = MAX + 1 Pila llena: cima = 1

MAX 5 MAX 4 MAX 3 MAX 2 MAX 1 MAX

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.6/28

Implementacin basada en arrays (3)


1

Indice cima
Posicin del siguiente hueco

MAX 5 MAX 4 MAX 3 MAX 2 MAX 1 MAX

cima

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.7/28

Implementacin basada en arrays (3)


1

Indice cima
Posicin del siguiente hueco Pila vaca: cima = MAX
cima

MAX

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.7/28

Implementacin basada en arrays (3)


0 1
cima

Indice cima
Posicin del siguiente hueco

MAX 5 MAX 4 MAX 3 MAX 2 MAX 1 MAX

Pila vaca: cima = MAX Pila llena: cima = 0

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.7/28

Implementacin basada en arrays (4)


Gestin de pila llena: presentar un mensaje de error Program failed. Stack error!!

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.8/28

Implementacin basada en arrays (4)


Gestin de pila llena: reservar un nuevo array de mayor longitud
si s.cima = 1 entonces aux reservar(2*s.tam,ELEMENTO) paratodo i [1..s.tam] hacer aux[s.tam+i] s.elementos[i] fin_para liberar(s.elementos) s.elementos aux s.cima s.tam+1 s.tam 2*s.tam fin_si
Algoritmos y Estructuras de Datos Departamento de Electricidad y Electr onica (UPV/EHU) TAD Pila p.8/28

Implementacin: arrays estticos (1)


Definicin del tipo PILA
constantes MAX = 100 fin_constantes tipos PILA = registro cima: entero elementos: array[1..MAX] de ELEMENTO fin_registro fin_tipos

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.9/28

Implementacin: arrays estticos (2)


procedimiento init (ref s: PILA) principio s.cima MAX + 1 fin

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.10/28

Implementacin: arrays estticos (2)


funcin push(ref s: PILA, x: ELEMENTO): booleano principio si s.cima = 1 entonces devolver FALSE else s.cima s.cima - 1 s.elementos[s.cima] x devolver TRUE fin_si fin

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.10/28

Implementacin: arrays estticos (2)


P { pila no vaca: s.cima MAX } funcin pop(ref s: PILA): ELEMENTO var x: ELEMENTO fin_var principio x s.elementos[s.cima] s.cima s.cima + 1 devolver x fin

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.10/28

Implementacin: arrays estticos (2)


funcin empty (s: PILA): booleano principio si s.cima = MAX + 1 entonces devolver TRUE fin_si devolver FALSE fin

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.10/28

Implementacin: arrays estticos (2)


P { pila no vaca: s.cima MAX } funcin top(s: PILA): ELEMENTO principio devolver s.elementos[s.cima] fin

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.10/28

Implementacin: arrays estticos (2)


procedimiento clear (ref s: PILA) principio s.cima MAX + 1 fin

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.10/28

Implementacin: arrays dinmicos (1)


Definicin del tipo PILA
tipos PILA = registro tam: entero cima: entero elementos: apuntador a ELEMENTO fin_registro fin_tipos

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.11/28

Implementacin: arrays dinmicos (2)


procedimiento init (ref s: PILA) principio s.elementos reservar(1,ELEMENTO) s.tam 1 s.cima s.tam + 1 fin

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.12/28

Implementacin: arrays dinmicos (2)


funcin push(ref s: PILA, x: ELEMENTO): booleano var aux: apuntador a ELEMENTO fin_var principio si s.cima = 1 entonces aux reservar(2*s.tam,ELEMENTO) paratodo i [1..s.tam] hacer aux[s.tam+i] s.elementos[i] fin_para liberar(s.elementos) s.elementos aux s.cima s.tam+1 s.tam 2*s.tam fin_si s.cima s.cima - 1 s.elementos[s.cima] x devolver TRUE fin

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.12/28

Implementacin: arrays dinmicos (2)


P { pila no vaca: s.cima s.tam } funcin pop(ref s: PILA): ELEMENTO var x: ELEMENTO fin_var principio x s.elementos[s.cima] s.cima s.cima + 1 si s.tam>1 AND 4*s.cima>3*s.tam entonces aux reservar(s.tam/2,ELEMENTO) paratodo i [s.cima..s.tam] hacer aux[i-s.tam/2] s.elementos[i] fin_para liberar(s.elementos) s.elementos aux s.cima s.cima-s.tam/2 s.tam s.tam/2 fin_si devolver x fin
Algoritmos y Estructuras de Datos Departamento de Electricidad y Electr onica (UPV/EHU) TAD Pila p.12/28

Implementacin: arrays dinmicos (2)


funcin empty (s: PILA): booleano principio si s.cima = s.tam + 1 entonces devolver TRUE fin_si devolver FALSE fin

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.12/28

Implementacin: arrays dinmicos (2)


P { pila no vaca: s.cima s.tam } funcin top(s: PILA): ELEMENTO principio devolver s.elementos[s.cima] fin

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.12/28

Implementacin: arrays dinmicos (2)


procedimiento clear (ref s: PILA) principio liberar(s.elementos) s.elementos reservar(1,ELEMENTO) s.tam 1 s.cima s.tam + 1 fin

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.12/28

Implementacin basada en listas ligadas


s

Pila como lista ligada


Cima

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

pila vaca: s = NULO

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.13/28

Implementacin: listas ligadas (1)


Definicin del tipo PILA
tipos ITEM = registro valor: ELEMENTO sig: apuntador a ITEM fin_registro PILA = apuntador a ITEM fin_tipos

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.14/28

Implementacin: listas ligadas (2)


procedimiento init (ref s: PILA) principio s NULO fin

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.15/28

Implementacin: listas ligadas (2)


funcin push(ref s: PILA, x: ELEMENTO): booleano var p: apuntador a ITEM fin_var principio p reservar(1,ITEM) apuntado(p).valor x apuntado(p).sig s sp devolver TRUE fin
Algoritmos y Estructuras de Datos Departamento de Electricidad y Electr onica (UPV/EHU) TAD Pila p.15/28

Implementacin: listas ligadas (2)


P { pila no vaca: s = NULO } funcin pop(ref s: PILA): ELEMENTO var x: ELEMENTO p: apuntador a ITEM fin_var principio x apuntado(s).valor ps s apuntado(s).sig liberar(p) devolver x fin
Algoritmos y Estructuras de Datos Departamento de Electricidad y Electr onica (UPV/EHU) TAD Pila p.15/28

Implementacin: listas ligadas (2)


funcin empty (s: PILA): booleano principio si s = NULO entonces devolver TRUE fin_si devolver FALSE fin

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.15/28

Implementacin: listas ligadas (2)


P { pila no vaca: s = NULO } funcin top(s: PILA): ELEMENTO principio devolver apuntado(s).valor fin

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.15/28

Implementacin: listas ligadas (2)


procedimiento clear (ref s: PILA) var p: apuntador a ITEM fin_var principio mientras s = NULO hacer p apuntado(s).sig liberar(s) sp n_mientras fin

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.15/28

Evaluacin de expresiones postjas (1)

ab+c*
notacin postfija

(a+b)*c
notacin infija

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.16/28

Evaluacin de expresiones postjas (1)

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

Evaluacin de expresiones postjas (2)

Ejemplo
Entrada 4873+*2/+ Pila

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.17/28

Evaluacin de expresiones postjas (2)

Ejemplo
Entrada 4873+*2/+ 873+*2/+ Pila 4

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.17/28

Evaluacin de expresiones postjas (2)

Ejemplo
Entrada 4873+*2/+ 873+*2/+ 73+*2/+ Pila 4 84

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.17/28

Evaluacin de expresiones postjas (2)

Ejemplo
Entrada 4873+*2/+ 873+*2/+ 73+*2/+ 3+*2/+ Pila 4 84 784

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.17/28

Evaluacin de expresiones postjas (2)

Ejemplo
Entrada 4873+*2/+ 873+*2/+ 73+*2/+ 3+*2/+ +*2/+ Pila 4 84 784 3784

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.17/28

Evaluacin de expresiones postjas (2)

Ejemplo
Entrada 4873+*2/+ 873+*2/+ 73+*2/+ 3+*2/+ +*2/+ *2/+ Pila 4 84 784 3784 10 8 4

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.17/28

Evaluacin de expresiones postjas (2)

Ejemplo
Entrada 4873+*2/+ 873+*2/+ 73+*2/+ 3+*2/+ +*2/+ *2/+ 2/+ Pila 4 84 784 3784 10 8 4 80 4

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.17/28

Evaluacin de expresiones postjas (2)

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

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.17/28

Evaluacin de expresiones postjas (2)

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

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.17/28

Evaluacin de expresiones postjas (2)

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

Algoritmos y Estructuras de Datos

Conversin inja postja (1)

Mtodo
item = operando

se lleva a la salida

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.18/28

Conversin inja postja (1)

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

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.18/28

Conversin inja postja (1)

Mtodo
item = operando item = operador tratamiento especco de los parntesis

(: se introduce en la pila directamente, y su


precedencia es menor que la de los operadores aritmticos ): se sacan operadores de la pila y se llevan a la salida hasta encontrar un parntesis de apertura, que tambin se saca de la pila pero no se lleva a la salida
Algoritmos y Estructuras de Datos Departamento de Electricidad y Electr onica (UPV/EHU) TAD Pila p.18/28

Conversin inja postja (1)

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

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.18/28

Conversin inja postja (2)

Ejemplo
Entrada
6*(4+9)+5/2

Salida

Pila

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.19/28

Conversin inja postja (2)

Ejemplo
Entrada
6*(4+9)+5/2 *(4+9)+5/2

Salida
6

Pila

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.19/28

Conversin inja postja (2)

Ejemplo
Entrada
6*(4+9)+5/2 *(4+9)+5/2 (4+9)+5/2

Salida
6 6

Pila

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.19/28

Conversin inja postja (2)

Ejemplo
Entrada
6*(4+9)+5/2 *(4+9)+5/2 (4+9)+5/2 4+9)+5/2

Salida
6 6 6

Pila

* (*

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.19/28

Conversin inja postja (2)

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

* (* (*

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.19/28

Conversin inja postja (2)

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

* (* (* +(*

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.19/28

Conversin inja postja (2)

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

* (* (* +(* +(*

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.19/28

Conversin inja postja (2)

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

* (* (* +(* +(* *

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.19/28

Conversin inja postja (2)

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

* (* (* +(* +(* * +

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.19/28

Conversin inja postja (2)

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

* (* (* +(* +(* * + +

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.19/28

Conversin inja postja (2)

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

Conversin inja postja (2)

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

Implementacin de la funcin top()


funcin top(ref s: PILA): ELEMENTO var x: ELEMENTO fvar principio x pop(s) push(s,x) devolver x fin Volver
Algoritmos y Estructuras de Datos Departamento de Electricidad y Electr onica (UPV/EHU) TAD Pila p.21/28

Implementacin de la funcin clear()


procedimiento clear (ref s: PILA) principio mientras NOT empty(s) hacer pop(s) fin_mientras fin

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

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.23/28

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

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.24/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

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.25/28

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

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.26/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

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.27/28

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

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica (UPV/EHU)

TAD Pila p.28/28