Está en la página 1de 31

Realizado por:

Oscar Aguilar G.
Pilas (Stacks)
 Una pila (stack) es
 Es un tipo especial de lista lineal en la que las
inserciones y borrado de elementos se realiza solo por
un extremo que se denomina cima o tope (top)

 En una pila el ultimo elemento añadido es el


primero en salir de la pila (UEPS, ultimo en entrar
primero en salir)
▪ Por esto se los denomina también listas UEPS
Pila

8
Cima 7
(Top) 6
5 EEE
4 DDD
3 CCC
2 BBB
1 AAA
 Características de las pilas
 Las pilas se representan por dos formas
▪ Arreglos
▪ Listas enlazadas

 Una pila tiene un numero entero como el puntero de la


pila , llamado CIMA o TOPE, que apunta al elemento de la
cima o tope

 Una pila tiene un numero máximo de elementos


Pila

8 Pila
Cima 7
(Top) 6 AAA BBB CCC DDD EEE
5 EEE 1 2 3 4 5 6 7 8
4 DDD
3 CCC Cima
(Top)
2 BBB
1 AAA
 Las operaciones básicas que define una pila son
 CrearPilaVacia() :crea una pila sin elementos
 Sacar(): Devuelve el elemento de la cima y lo borra
 Meter(): añade un elemento en la Pila
 EsVacia(): Devuelve verdadero si la pila no tiene
elementos
 Cima():Devuelve el elemento de la cima
 EsLlena(): Devuelve verdadero si la pila esta llena de
elementos
Realización de Pilas
basados en arreglos
 Para realizar una pila basado en arreglos, el tipo
de dato abstracto PILA se define como
 Cima: dato entero que apunta a la cima de Pila
 Elementos: elementos de la Pila (vector de elementos)
 TamañoMax: numero máximo del vector de elementos de
Pila
 Operaciones de la Pila
 CrearPilaVacia() :crea una pila sin elementos
 Sacar(): Devuelve el elemento de la cima y lo borra
 Meter(X): añade un elemento X en la Pila
 EsVacia(): Devuelve verdadero si la pila no tiene
elementos
 Cima():Devuelve el elemento de la cima
Pila
- Cima : entero
- Elementos [1..TamañoMax] : tipoElem
- TamañoMax : entero

+ CrearPila()
+ Sacar( ): tipoElem
+ Meter(elem : tipoElem)
+ EsVacia(): logico
+ Cima(): tipoElem
 CrearPila()
Procedimiento CrearPila()
Inicio
cima <- 0
Fin

 EsVacia()
funcion EsVacia():logico
Inicio
si (cima = 0)
devolver(Verdad)
sino
devolver(Falso)
fin_si
Fin
 Cima()

funcion Cima(): tipoElem


Inicio
si (EsVacia())
escribir(“La Pila esta vacía”)
sino
devolver(Elementos[Cima])
fin_si
Fin
 Sacar()
funcion Sacar():tipoElem
Inicio
si (EsVacia())
escribir(“La Pila esta vacía”)
sino
elem <- Elementos[Cima]
Elementos[Cima] <- “”
cima <- cima-1
devolver(elem)
fin_si
Fin
 Meter()

procedimiento Meter(elem :tipoElem)


Inicio
si (Cima = TamañoMax)
escribir(“La Pila esta Llena”)
sino
cima <- cima+1
Elementos[Cima] <- elem
fin_si
Fin
 Pila de tipo carácter de tamaño máximo 5 elementos

Pila p1

CrearPila() 5
4
3

p1:Pila Cima 2
(Top) 1
Cima =0
Elementos =( , , , , )
TamañoMax = 5
 Pila de tipo carácter de tamaño máximo 5 elementos

Pila p1
Meter(B)
5
4
Cima 3
(Top)
p1:Pila 2
1 B
Cima =1
Elementos =(B,,,,)
TamañoMax = 5
 Pila de tipo carácter de tamaño máximo 5 elementos

Pila p1

Meter(P) 5
Cima 4
(Top) 3

p1:Pila 2 P
1 B
Cima =2
Elementos =(B,P, , , )
TamañoMax = 5
 Pila de tipo carácter de tamaño máximo 5 elementos

Pila p1
Cima() = P
5
Cima 4
(Top) 3

p1:Pila 2 P
1 B
Cima =2
Elementos =(B,P, , , )
TamañoMax = 5
 Pila de tipo carácter de tamaño máximo 5 elementos

Pila p1
Sacar() = P
5
4
Cima 3
(Top)
p1:Pila 2
1 B
Cima =1
Elementos =(B, , , , )
TamañoMax = 5
 Pila de tipo carácter de tamaño máximo 5 elementos

Pila p1
Meter(X)
Meter(M) Cima
5 D
Meter(R) (Top)
Meter(D) 4 R
3 M
p1:Pila 2 X
1 B
Cima =5
Elementos =(B,X,M,R,D)
TamañoMax = 5
 Pila de tipo carácter de tamaño máximo 5 elementos

Pila p1
Meter(E) Cima
5 D
(Top)
“Pila esta llena” 4 R
3 M
p1:Pila 2 X
1 B
Cima =5
Elementos =(B,X,M,R,D)
TamañoMax = 5
 Pila de tipo carácter de tamaño máximo 5 elementos

Pila p1
Cima() = D Cima
5 D
(Top)
4 R
3 M
p1:Pila 2 X
1 B
Cima =5
Elementos =(B,X,M,R,D)
TamañoMax = 5
 Pila de tipo carácter de tamaño máximo 5

Pila p1
Sacar() = D Cima
(Top) 5
4 R
3 M
p1:Pila 2 X
1 B
Cima =4
Elementos =(B,X,M,R,)
TamañoMax = 5
 Pila de tipo carácter de tamaño máximo 5 elementos

Pila p1
Sacar() = R
Sacar() = M 5
Sacar() = X
Sacar() = B 4
3

p1:Pila Cima 2
(Top) 1
Cima =0
Elementos =(,,,,)
TamañoMax = 5
 Pila de tipo carácter de tamaño máximo 5 elementos

Pila p1
Sacar() =
5
“Pila Vacia”
4
3

p1:Pila Cima 2
(Top) 1
Cima =0
Elementos =(,,,,)
TamañoMax = 5
 Pila de tipo carácter de tamaño máximo 5 elementos

Pila p1
Meter(A)
Meter(B) 5

Cima 4
(Top) 3

p1:Pila 2 B
1 A
Cima =2
Elementos =(A,B,,,)
TamañoMax = 5
Aplicaciones de TAD Pila
 Las pilas son una estructura de datos muy usada en
la solución de diversos tipos de problemas, entre
ellos tenemos:
 Llamadas a subprogramas
 Recursión
 Tratamiento de expresiones aritméticas
 Ordenación
Fin

También podría gustarte