Cali Laboratorio Número 13: Estructura de datos Cola Abril 23 de 2013 1. Calentamiento (60’) Como calentamiento previo a la tarea de hoy realizaremos la implementación de colas (Queues) en C. Cabe recordar las operaciones sobre colas; init(queue) que inicializa la cola; enqueue(queue, val) que agrega un valor a la cola; dequeue(queue) que devuelve el valor de la cabeza de la cola; empty(queue) que retorna True si la cola está vacı́a. Sabiendo esto implemente: Estructura cola usando un array para almacenar los datos. Estructura cola usando 2 pilas para almacenar datos. Debe implementar dichas estructuras en un solo programa y mostrar su funcionamiento con datos. 10. (Solucion con colas 90’) En el juego de cartas para niños Guerra, un mazo de 52 cartas es repartido aleatoriamente entre dos jugadores. De tal forma que cada jugador participa con 26 cartas. Los jugadores no miran nunca sus cartas, las tienen en una pila boca abajo. El objetivo del juego es ganar todas las cartas. 1 Laboratorio de programación Estructura de datos Cola Los jugadores juegan un turno tomando la carta que está al tope de su mazo y poniendola sobre la mesa al mismo tiempo. El jugador que saque la carta con mayor valor se lleva las dos cartas. Éstas cartas son puestas en la parte inferior del mazo del ganador. Las cartas son valoradas como es usual: A, K, Q, J, 10, 9, 8, 7, 6, 5, 4, 3, 2. Las pintas de las cartas son ignoradas. Los jugadores continuan jugando hasta que uno de ellos tome todas las cartas. Cuando los jugadores sacan la misma carta, se entra a la Guerra. Esas dos cartas quedan en la mesa. Los jugadores proceden a tomar la siguiente carta de sus respectivos mazos y la ponen boca abajo sobre la mesa. Luego toman otra carta del mazo y la ponen boca arriba. El que saque la mayor de estas últimas toma las 6 cartas que están sobre la mesa. Si las nuevas cartas quedan en empate, el proceso continúa hasta que se desempate el juego. Entonces el jugador ganador tomará todas las cartas en la mesa y las pondrá al final de su mazo. Si alguno de los jugadores se queda sin cartas en cualquier punto del juego, el otro jugador gana inmediatamente. Las cartas para el ganador debe ponerse en el orden exacto en el que se pusieron en la mesa: primera carta del jugador 1, primera carta del jugador 2, segunda carta del jugador 1, etc. Como lo sabe cualquier niño que conoce el juego, una partida puede durar bastante tiempo. La pregunta es: ¿cuanto tiempo? Su trabajo es implementar un programa que simule el juego y reporte el número de movidas hechas. La entrada para el programa consiste en varias lı́neas que vienen en pares. La primer lı́nea son las cartas del jugador 1 y la segunda para el jugador 2. Un ejemplo de entrada serı́a 4d 8d 6d 9h Ah 2h Ks 8c 9d Qd As 8h As 9c 8c Qs 4c 7s 4h 7c 4s 9s 3s 2c Jh 5d Kc Ac 7d 5d 6h 4c 7c 8h Jc 7c Jd Js 4d Td 5h 2d Qs Qc Tc Jc 8s Tc Qh 5s Kd 7s Qc Jh 6s Ts 3s 2d Kh Ac 6c Jc 5h 6s Td 9s 2c Ad 2h As 3h 9c Kc 7d Ks 4h 5c 5s 4s Kh 5c Ts 9h Qd Ah Tc 2s 6h 8c 4s 3h 3s Qh 2c Qs Js Qd 8s 8d Kh 3d 6d 2h 2d 7d Th Ks Kc 7s 2s 3d 7h 4d 2s 9s 5h Ah 5s Kd Th 3c 6d Js 9c 6c 8d 8h Ac Jd 5d 6s 9d Kd 5c 4c Ad 7h 4h 7h 9h Jh 3h Qh Ad Th 3d 6c 8s 3c 6h Td 9d Qc 3c Jd Ts La simulación incluye que se imprima todas las cartas que van sacando los jugadores. La salida, el número de movimientos hechos en el juego, debe escribirse en archivos. Utilice selectores de archivos para obtener la entrada y la salida. 11. Entrega Una vez finalice su implementación comprima la carpeta en un archivo con el nombre laboratorio13.tar.gz. Debe entregar el paquete a mas tardar el martes 30 de abril a las 10.30am usando el sistema moodle. 23 de abril de 2013 Página 2 de 2