ejercicios de listas enlazadas dobles y circulares

2
Ejercicios de Listas Enlazadas Dobles y circulares 1) Escriba un programa que permita recorrer una lista doble en ambos sentidos. 2) Se tiene 2 listas doblemente enlazadas encontrar la unión, intervención y diferencia entre ellas. 3) 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. 4) 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. 5) 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. 6) 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. 7) 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 Estudiante desaprobados. 8) 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. 9) 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

Upload: marlei-alipio-de-la-cruz

Post on 17-Dec-2015

154 views

Category:

Documents


10 download

DESCRIPTION

Listas c++

TRANSCRIPT

  • Ejercicios de Listas Enlazadas Dobles y circulares

    1) Escriba un programa que permita recorrer una lista doble en ambos sentidos.

    2) Se tiene 2 listas doblemente enlazadas encontrar la unin, intervencin y diferencia entre

    ellas.

    3) Ingresar 2 listas doblemente enlazadas y reportar:

    a) Si las listas son iguales en tamao y contenido

    b) Si las listas son iguales en tamao pero no en contenido

    c) No tienen el mismo tamao ni contenido.

    4) 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 penltimo y el penltimo pase a ser el segundo y as

    sucesivamente.

    5) Escribir un programa que retorne el nmero 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.

    6) Crear una lista doblemente enlazada con 50 nmeros enteros, del 1 al 999 generados

    aleatoriamente. Una vez creada la lista, se deben eliminar los nodos que estn fuera de un

    rango de valores ledos desde el teclado.

    7) 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: cdigo,

    nombre, apellidos, correo y nota. El programa debe permitir realizar las operaciones de:

    a) Agregar un estudiante.

    b) Buscar un estudiante por cdigo.

    c) Eliminar un estudiante

    d) Total de estudiantes aprobados

    e) Total de Estudiante desaprobados.

    8) 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 nmero de elementos de la lista

    d) Mostrar todos los elementos de la lista.

    9) 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 cul de ellos debe escapar y solicita ayuda. Forman

    un crculo y se escoge un nmero 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 direccin del reloj al rededor del crculo. Cuando la cuenta

    alcanza n, este soldado es retirado del crculo y la cuenta empieza de nuevo, con el

    siguiente hombre. El proceso contina de tal manera que cada vez que la cuenta alcanza

    n, se remueve un hombre del crculo. Un soldado que es removido del crculo 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 nmero n, el ordenamiento de los hombres en

    el crculo y el hombre a partir del que se comienza a contar, determinar el orden en el cual

    los hombres son eliminados del crculo y cual debe escapar. La entrada al programa es el

    nmero n y una lista de nombres que es el ordenamiento en el sentido de las manecillas

    del reloj en el crculo, comenzando con el hombre a partir del cual se debe comenzar a

    contar. La ltima lnea 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.

    Despus 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.

    10) 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