You are on page 1of 2

Ejercicios Propuestos de Listas Enlazadas Dobles y circulares

1) Escriba un programa que permita recorrer una lista doble en ambos sentidos.
2) Ingresar 2 listas doblemente enlazadas y reportar:
a) Si las listas son iguales en tamaño y contenido
b) Si las listas son iguales en tamaño pero no en contenido
c) No tienen el mismo tamaño ni contenido.
3) Escribir un programa que permita invertir los datos almacenados en una lista doblemente
enlazada, es decir que el primer elemento pase a ser el último y el último pase a ser el
primero, que el segundo sea el penúltimo y el penúltimo pase a ser el segundo y así
sucesivamente.
4) Escribir un programa que retorne el número de veces que se encuentra el dato dentro de
la lista doble. En caso de no encontrarse, se debe mostrar un mensaje indicando que el
dato no fue encontrado. Se debe ingresar el valor que se desea buscar.
5) Crear una lista doblemente enlazada con 50 números enteros, del 1 al 999 generados
aleatoriamente. Una vez creada la lista, se deben eliminar los nodos que estén fuera de un
rango de valores leídos desde el teclado.
6) Crear un programa que maneje el registro de los estudiantes, utilizando listas doblemente
enlazadas. Los estudiantes aprobados deben insertarse al inicio y los reprobados por el
final de la lista. Los datos requeridos por cada estudiante son los siguientes: código,
nombre, apellidos, correo y nota. El programa debe permitir realizar las operaciones de:
a) Agregar un estudiante.
b) Buscar un estudiante por código.
c) Eliminar un estudiante
d) Total de estudiantes aprobados
e) Total de estudiantes desaprobados.
7) Crear el siguiente menú para una lista simplemente circular
a) Ingresar un elemento
b) Dado un elemento buscarlo si se encuentra eliminarlo
c) Mostrar el número de elementos de la lista
d) Mostrar todos los elementos de la lista.
8) N patos están nadando en círculo en un lago. Un cazador dispara su escopeta y elimina
uno a uno los patos de manera aleatoria. Muestre los patos sobrevivientes después de
cada disparo. Use una lista enlazada circular.
9) Se tiene una ruleta la cual gira alternado los números del 0 al 20, se pulsa una tecla y si
sale par gana 2 si sale impar pierde 1, si sale 0 pierde todo. Gire la ruleta n veces (vez por
vez) y muestre el monto ganado o perdido. Use una lista enlazada circular
10) Consideremos un problema que puede ser resuelto en una forma directa mediante listas
circulares. El problema se conoce con el nombre de José, y consiste en un grupo de
soldados rodeados por una gran fuerza enemiga. No hay esperanza de victoria si no llegan
refuerzos, y existe un solo caballo disponible para el escape. Los soldados se ponen de
acuerdo en un pacto para determinar cuál de ellos debe escapar y solicita ayuda. Forman
un círculo y se escoge un número n al azar de un sombrero, igualmente se escoge el
nombre de un soldado. Comenzando con el soldado cuyo nombre se ha seleccionado,
comienzan a contar en la dirección del reloj al rededor del círculo. Cuando la cuenta
alcanza n, este soldado es retirado del círculo y la cuenta empieza de nuevo, con el
siguiente hombre. El proceso continúa de tal manera que cada vez que la cuenta alcanza
n, se remueve un hombre del círculo. Un soldado que es removido del círculo por
supuesto no se vuelve a contar. El último soldado que queda es el que debe tomar el
caballo y escapar. El problema es: dado un número n, el ordenamiento de los hombres en
el círculo y el hombre a partir del que se comienza a contar, determinar el orden en el cual
los hombres son eliminados del círculo y cual debe escapar. La entrada al programa es el
número n y una lista de nombres que es el ordenamiento en el sentido de las manecillas
del reloj en el círculo, comenzando con el hombre a partir del cual se debe comenzar a
contar. La última línea de entrada contiene "FIN", indicando el final de la entrada. El
programa debe mostrar los nombres de los soldados en el orden que han sido eliminados
y el nombre de la persona que escapa.
Por ejemplo, supongamos que n es 3 y que hay 5 hombres denominados A, B, C, D y E.
Contamos tres hombres partiendo de A, de tal manera que C es eliminado primero. Luego
empezamos en D y contamos D, E y regresamos a A, de tal manera que A es eliminado.
Después contamos B,D y E (C ya ha sido eliminado), se elimina E. Finalmente contamos B,D
y B, se elimina B y D es el hombre que escapa.

11) Se ha definido la siguiente estructura de datos:


En el arreglo "POSTRES" se almacenan nombres de postres. A su vez cada elemento del
arreglo tiene una lista de todos los ingredientes que requiere dicho postre.
Escribir un programa para:
a) Ingresar un postre con todos sus ingredientes
b) Dado el nombre de un postre, muestre la lista de todos sus ingredientes.
c) Dado el nombre de un postre, pueda insertar nuevos ingredientes a su
correspondiente lista.
d) Dado el nombre de un postre, pueda eliminar alguno de sus ingredientes.
e) Eliminar un postre con todos sus ingredientes

You might also like