Pilas y colas - WordPress.com

Anuncio
UNIV ERSIDAD NACIONAL DE SALTA
SEDE REGIONAL ORAN
CATEDRA: Algoritmos y Estructuras de Datos (TUP)
Año: 2014
Trabaja Práctico N° 5: Contenedores Lineales: Pilas y Colas – Colas de prioridad (3 clases)
--------------------------------------------------------------------------------------------------------------------------------------------
PILAS
1) Representar gráficamente la evolución de cada uno de los segmentos de código, en donde P
es una pila de caracteres implementada con Array, y las variables x, y, z son caracteres:
a) Vaciar(P);
Push(‘a’, P);
Push(‘b’, P);
Push(‘c’, P);
Pop(x,P);
Pop(y,P);
Pop(z,P);
b) Vaciar(P);
Push(‘a’, P);
Push(‘b’, P);
Vaciar(P);
Push(‘c’, P);
Pop(x,P);
Push(‘a’,P);
Pop(y,P);
Push(‘b’,P);
Pop(z,P);
c) Vaciar(P);
Push(‘a’, P);
Push(‘b’, P);
Push(‘c’, P);
Pop(‘x’,P);
Pop(‘y’,P);
Push(x,P);
Pop(‘z’,P);
d) Vaciar(P);
Push(‘a’,P);
Push(‘b’,P);
Push(‘c’,P);
While not(vacia(P)) do Pop(‘x’,P);
2) Implementar el TAD Pila usando Array en una unidad. Luego escribir un programa que la
utilice para verificar si una cadena de caracteres se encuentra bien balanceada en paréntesis.
3) Una cadena C de caracteres que contiene números y operadores y para finalizar la cadena un
paréntesis ’ )’, representa una expresión escrita en notación polaca inversa o postfija (el
operador se coloca después de los operandos). Escribir un algoritmo que utilizando una pila
con Array evalúe la expresión aritmética.
1
UNIV ERSIDAD NACIONAL DE SALTA
SEDE REGIONAL ORAN
CATEDRA: Algoritmos y Estructuras de Datos (TUP)
Año: 2014
Trabaja Práctico N° 5: Contenedores Lineales: Pilas y Colas – Colas de prioridad (3 clases)
--------------------------------------------------------------------------------------------------------------------------------------------
Símbolo
examinado
C(1)=5
C(2)=6
C(3)=2
C(4)=+
C(5)=*
C(6)=12
C(7)=4
C(8)=/
C(9)=-
C(10)=)
Acción
Meter(5, Pila)
Meter(6, Pila)
Meter(2,Pila)
Sacar(Op1, Pila)
Sacar(Op2, Pila)
Computar(Op1,Op2,+,Resultado)
Meter(Resultado, Pila)
Sacar(Op1, Pila)
Sacar(Op2, Pila)
Computar(Op1,Op2,*,Resultado)
Meter(Resultado, Pila)
Meter(12, Pila)
Meter(4, Pila)
Sacar(Op1, Pila)
Sacar(Op2, Pila)
Computar(Op1,Op2,/,Resultado)
Meter(Resultado, Pila)
Sacar(Op1, Pila)
Sacar(Op2, Pila)
Computar(Op1,Op2,-,Resultado)
Meter(Resultado, Pila)
Sacar(Resultado, Pila)
Mostrar(Resultado)
Contenido de la pila
5
6,5
2,6,5
6,5
5
8,5
5
40
12,40
4,12,40
12,40
40
3,40
40
37
-
4) Dada una pila P (implementada mediante Array), invertirla sin usar estructuras auxiliares.
5) Realizar los ejercicios 1, 2 y 3 con el TAD Pila usando Lista Enlazada con asignación dinámica
de la memoria.
COLAS
6) Implementar el TAD Cola usando Array en una unidad. Luego escribir un programa que la
utilice para resolver el siguiente problema: “Dada una cadena de caracteres que contiene dos
subcadenas separadas por un punto, se quiere saber si las subcadenas son iguales”
- Cadena “xyz.xyz”: Iguales(cadena) devolverá verdadero.
- Cadena “xyza.xyz”: Iguales(cadena) devolverá falso.
7) Supongamos que se tiene un bar al paso, el cual dispone de 20 mesas, cada una numerada.
Cada persona debe comprar un ticket por los alimentos a consumir. En el momento de la
venta se le dará además del ticket, que le servirá para retirar los alimentos de otro
mostrador, el número de mesa libre.
2
UNIV ERSIDAD NACIONAL DE SALTA
SEDE REGIONAL ORAN
CATEDRA: Algoritmos y Estructuras de Datos (TUP)
Año: 2014
Trabaja Práctico N° 5: Contenedores Lineales: Pilas y Colas – Colas de prioridad (3 clases)
--------------------------------------------------------------------------------------------------------------------------------------------
El sistema funciona así:
a) Al iniciar la jornada se tiene en la pila todos los números de mesas (20) que están
desocupadas.
b) A medida que el cliente ingresa al bar, ingresa a la cola de espera para comprar tickets. El
primero de la cola será atendido siempre y cuando exista por lo menos una mesa
desocupada.
c) Cuando se desocupa una mesa, se agrega a la pila el número de mesa libre.
Escribir un algoritmo que permita gestionar el uso de las mesas, simulando la cola de clientes,
la pila de números de mesas desocupadas.
8) Dada una cola C (implementada mediante Array) invertirla sin usar estructuras auxiliares
9) Implementar el TAD Cola Circular usando Array en una unidad, redefiniendo las operaciones
meter, sacar, vacia, llena, vaciar. Probar el TAD en un programa invocando apropiadamente
sus operaciones.
10) Realizar los ejercicios 6 , 7 y 9 utilizando una cola implementada con listas enlazadas.
11) Implementar en una unidad el TAD Cola_Prioridad usando Array, escribir la operación meter
para insertar en la cola un elemento con cierta prioridad y la operación sacar que extrae un
elemento de la cola (el de mayor prioridad). Probar el TAD en un programa invocando
apropiadamente sus operaciones.
12) Implementar en una unidad el TAD Cola_Prioridad usando listas enlazadas, escribir la
operación meter para insertar en la cola un elemento con cierta prioridad y la operación
sacar que extrae un elemento de la cola (el de mayor prioridad). Probar el TAD en un
programa invocando apropiadamente sus operaciones.
3
Descargar