Beruflich Dokumente
Kultur Dokumente
Las Pilas y las Colas, como tal, no existen en los lenguajes de programacin, sino que se
pueden implementar mediante el uso de estructuras estticas o dinmicas. Se
caracterizan porque las operaciones de insercin y cancelacin estn restringidas por la
estructura utilizada para resolver un ejercicio. En una pila se inserta y se cancela por un
mismo extremo, un ejemplo de una pila puede ser la forma como se organizan los platos
en un bufet (El plato que se coloca de ultimo en la pila es el primero que se saca). En
una cola se inserta por un extremo y se cancela por el extremo opuesto, un ejemplo de
una cola, puede ser una Fila de un banco donde los clientes se ubican a medida que van
llegando y salen de la fila en el mismo orden que ingresan, es decir; los primeros en
entrar en la fila son los primeros en salir.
Se van a representar las Pilas y las Colas mediante arreglos unidimensionales
PILAS
Definicin
tope
pila
Juan
Jos
Abel
AJuan
Flor
tam
un
Sobre las pilas se pueden realizar diferentes operaciones, tales como incluir, eliminar,
buscar y otras.
Sino
Fin - si
Fin-SUB
Sino
elempila[tope] // Se regresa el valor del elemento eliminado
topetope-1
Fin - si
Fin-SUB
Todos los algoritmos de Pilas y de Colas se desarrollan utilizando los algoritmos bsicos
de cancelacin e insercin.
Ejercicios resueltos
1. Eliminar de una pila ya creada y representada por medio de un vector todas las
ocurrencias del elemento elem.
Para solucionar este ejercicio vamos a realizar los siguientes pasos:
a) Eliminar uno a uno los elementos de la pila, si son diferentes de elem se van
insertando en una pila auxiliar llamada pila1. Los elementos iguales a elem no se
insertan en la pila auxiliar.
tope10
MQ
(tope <>
0)
(elemp<>elem)
Inpila (pila1, tope1, tam,elemp)
b) Cancelar los elementos de la pila auxiliar pila1 e irlos insertando en la pila original,
para nuestro caso llamada pila.
MQ
(tope1 <>
0)
Observe que finalmente, pila1 queda vaca y la pila original pila, queda con los
elementos diferentes de elem.
NOTA: Observe que, cuando se llaman las subrutinas de Inpila se incluye un elemento
a la vez y cuando se llama Canpila se cancela un solo elemento a la vez.
Uniendo los pasos para la solucin del problema el algoritmo finalmente queda as:
(tope <>
0)
(elemp<>elem)
Inpila (pila1, tope1, tam,elemp)
Fin - si
Fin - MQ
MQ
(tope1 <>
0)
Fin - MQ
Fin-SUB
Intercambiar el orden del elemento que est en el tope por el primer elemento de
la pila, y el primer elemento ponerlo en el tope.
Tam
20
Tam
Tope
12
12
20
Pila
Tope
Pila
2) Se sigue eliminando elemento por elemento de la pila original hasta que solo
quede un elemento y los vamos guardando en una pila auxiliar llamada Pila1.
20
Tam
Tam
Tope
Tope
7
12
12
9
12
Pila
Tam
Pila1
9
20
Pila
Tope
Ejemplo:
MQ
(tope<>1)
Canpila (pila, tope, tam,elemp) // Se sigue cancelando en la pila original
Inpila (pila1, tope1, tam,elemp) // Se sigue incluyendo en la pila original
(tope1<>0)
Canpila (pila1, tope1, tam,elemp) //Se cancelan de pila1
Inpila (pila, tope, tam,elemp) //Se insertan en pila
Fin - MQ
Inpila (pila, tope, tam,primero) //Se inserta la variable primero
FinSUB
SUB
Fin_MQ
MQ
Fin_MQ
FIN
SUB
Tam
Tope=
9
3
2
1
PILA
Ejercicios propuestos
1. Intercambiar las posiciones de dos elementos en una pila representada por un vector.
Las posiciones se brindaran por el usuario. Debe tenerse en cuenta que la posicin
ingresada debe ser menor al tamao del vector como lo muestra el ejemplo:
a. Pila = {30-40-50-10-5}
Meter (P, 4)
Sacar(P,Z)
Meter(P, Y)
Meter(P, 3)
Meter(P, Z)
Sacar(P,X)
Meter(P, 2)
Meter(P, X)
MQ
FIN-MQ
FIN
4. Realizar una prueba paso a paso, mostrando el estado de la pila en cada
instruccin
INICIO
LimpiarPila (P)
A= 0
B=5
D= 4
Meter( P,A)
Meter( P,B)
Sacar(P,C)
A=A+ 1
Meter( P,A)
Meter( P,C)
Meter( P,8)
B =A+ B
Meter( P,B)
Meter( P,7)
MQ
FIN-MQ
FIN
COLAS.
Es una estructura de datos que permite insertar elementos por un extremo, lo
llamaremos Tope y cancelar por el extremo opuesto que lo llamaremos Base. Tambin
se le llama estructura FIFO (FIRST INPUT FIRST OUTPUT) porque el primer
elemento en ingresar ser el primer elemento en salir.
En nuestro caso usaremos la siguiente notacin:
Col
Jos
Abel
Flor
5. Una cola se encuentra vaca si el Tope y la base estn en cero( Tope=0, Base=0)
Para la cola de la figura su estado es el siguiente:
Base = 1 Posicin del ltimo elemento ELIMINADO
Tope = 4 Posicin del ltimo elemento INCLUIDO
Tam = 6 Tamao de la cola
Si realizamos las siguientes operaciones sobre la Cola de la figura, su estado en cada
literal sera:
a) Eliminar a Jos
Col
Abel
Flor
b) Insertar a Mary
Tam
Abel
Colaila
c) Eliminar a Abel
Flor
Mary
Base=2
Tope=5
Tam
Flor
Colaila
Base=3
Mary
Tope=5
d) Insertar a Pepe
AJuan
Flor
Colaila
Pepe
Mary
Base=3
AJuan
Tope=5
e) Eliminar a Flor
Tam
Colaila
Mary
Base=4
AJuan
AJuan
Pepe
Tope=5
f) Insertar a Luis
Para insertar otro Nombre, Luis. Se podra:
Tam
Colaila
Mary
Base=4
Pepe
Tope=5
Colaila
Luis
Mary
Tope=1
Pepe
Base=4
a)
Tam
Colaila
10
30
40
15
Base=0
Tope=6
b)
Tam
30
Colaila
Base=1
40
15
9
Tope=6
AJuan
c)
Col
10
30
15
AJuan
Colaila
Base=3
Colaila
100
15
Base=3
AJuan
AJuan
SUB
Sino
Si
(Tope = Tam)
Tope 1
Sino
TopeTope + 1
Finsi
cola[Tope]Elem
Fin si
Fin-SUB
Eliminar (Cancola): Esta operacin consiste en incrementar la variable Base en uno y
eliminar este elemento.
Observe los casos que se pueden presentar al simular la cola por medio de un vector
circular.
Caso 1.
a) Cola Vacia
Tam
Colaila
Base=03
Tope=0
AJuan
Tam
15
Colaila
Tope=4
Una vez se incrementa la base en uno, la Base se hace igual al Tope, quedando la cola
vaca, por eso se debe colocar la Base y el Tope en cero (Base= 0 y el Tope =0).
C) Cola circular prximo a eliminar el primero
AJuan
Colaila
10
30
40
Tam
15
Tope=4
Base=6
AJuan
SUB
(Base = 0 y Tope = 0)
Escribir cola Vaca
Sino
Si
(Base = Tam)
Base1
Sino
Base Base + 1
Fin si
Elem1cola[Base]
Si
(Base = Tope)
Base0
Tope0
Fin si
Fin si
Fin SUB
INCOLA (C,X)
INCOLA (C,Y)
Z=XY
Si
(Z=0)
MQ
FIN-MQ
Finsi
Hacer una prueba de escritorio a los siguientes algoritmos e ir mostrando los estados de
la Cola en cada operacin de llamado.
Algoritmo 1
SUB
(tope <> 0)
Cancola ( Cola, base, tope, Tam, X)
Escriba X
FIN-MQ
FIN_SUB
Algoritmo 2
SUB
B1
tope0
CA+B
MQ
(C<10)
SI
(C%2 = 0)
Ejecutar INPILA( Pila, tope, Tam, C)
SINO
Ejecutar INCOLA( Cola, Base1, tope1, Tam, C)
Fi-si
AB
BC
CA+B
Fin-MQ
MQ
(tope <> 0)
Ejecutar CANPILA( Pila, tope, Tam, C)
Escriba C
Fin-MQ
MQ
( tope1<> Base1)
Ejecutar CANCOLA(Cola,Base1, tope1, Tam, C)
Escriba C
FIN_MQ
FIN_SUB
SUB
(Tope # 0 ) Haga
Llamar Canpila ( Pila, Tope, Max, elem)
Llamar Inpila ( Pila1; Tope1, Max, elem)
Llamar Inpila ( Pila2, Tope2, Max, elem)
FIN_MQ.
MQ
(Tope1# 0) Haga
Llamar Canpila ( Pila1; Tope1, Max, elem)
Llamar Inpila ( Pila, Tope, Max, elem)
FIN_MQ
MQ (Tope2# 0) Haga
parte?
EJERCICIOS PROPUESTOS
Realizar una subrutina para cancelar el elemento de la posicin K en una cola. Haga lo
mismo con la pila.
Hacer una copia de una cola en otra sin los elementos repetidos. Debe utilizar las
subrutinas de Pilas y Colas utilizadas en la clase, simplemente llamndolas. Solo se
permite la solucin a este punto, utilizando PILAS y Colas.
Dada una cola representada por medio de un vector circular, hacer un algoritmo que lea
un valor n1 y si este valor es menor que el tope eliminar los elementos que se
encuentran en las posiciones 1, 1+n1, 1+2*n1, 1+3*n1,..
Tope
10
200
15
45
111
33
Se represent una cola con un vector circular de cinco posiciones. Utilizando las
variables, BASE para indicar la posicin del ltimo elemento cancelado y TOPE para
indicar la posicin del ltimo elemento incluido y suponiendo que el arreglo se defini
con los subndices del 1 al 5 Cul ser el estado de la COLA si BASE esta en la
posicin 4 y TOPE en la posicin 3
Hacer un algoritmo que realice las siguientes operaciones en una pila y en una cola
vaca:
a) lea nmeros enteros hasta que se introduzca un cero. Si los nmeros son menores de
10, se almacenarn en una pila representada por un vector, y si son mayores de 9, en una
cola representada por un vector circular.
b) Despus lea un nmero N, saque de la pila N elementos y calcule la suma de ellos.
c) Por ltimo, borre de la cola el primer nmero que coincida con la suma calculada