elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [AYUDA] Listas anidadas?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [AYUDA] Listas anidadas?  (Leído 4,999 veces)
carlosabcs18

Desconectado Desconectado

Mensajes: 8


Ver Perfil
[AYUDA] Listas anidadas?
« en: 4 Noviembre 2014, 21:33 pm »

Hola, me dejaron que haga el siguiente ejercicio usando listas:
Se tiene una lista de n enfermos (código, nombres, apellidos, dirección, teléfono, genero
[M,F],edad), además c/u tiene una o mas enfermedades (código, nombre,
tipodeenfermedad[Contagiosa, Maligna, Benigna, Mortal]) y se quiere crear un programa
que permita:
a. Crear un nuevo paciente y sus enfermedades
b. Eliminar paciente (en una cierta posición), y sus enfermedades (si un paciente tiene
asignado una enfermedad esté ya no se puede borrar)
c. Actualizar pacientes y enfermedades
d. Mostrar listado (pacientes por enfermedades)
e. Copiar datos de enfermedades de un paciente a otro


El programa se puede codificar usando cualquier tipo de lista(simple,doble,circular).


Ahora, mi problema es el hecho de que tengo una lista "M" de enfermos con "N" cantidad de enfermedades o sea estructuras anidadas, que en este caso seria una lista anidada, pero como se trabajan las listas anidadas?
Analizando un poco el ejercicio, pensé que necesito 2 punteros para cada nodo(enfermo): uno que apunte al nodo siguiente y uno que apunte a la lista de enfermedades, estoy yendo por buen camino o algo anda mal con mi idea?
Pls help mee!! :C


En línea

Flakito81


Desconectado Desconectado

Mensajes: 519



Ver Perfil
Re: [AYUDA] Listas anidadas?
« Respuesta #1 en: 5 Noviembre 2014, 01:44 am »

No creo que nadie te haga el ejercicio, de todas maneras vas bien.
Una lista para enfermos y dentro de ese 'nodo/ficha' (o como lo quieras llamar) tienes otro puntero con las enfermedades. El movimiento de punteros es el mismo, lo unico que cambia es la informacion que contiene.


En línea

carlosabcs18

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: [AYUDA] Listas anidadas?
« Respuesta #2 en: 5 Noviembre 2014, 02:17 am »

Hola, no quiero que me hagan el ejercicio, es muy tedioso como para hacerlo para otra persona, solo lo puse como referencia.
Una duda, todo bien con el puntero dentro de enfermo que apunta a lista de enfermedades pero como hago para registrar las enfermedades de cada enfermo y luego reportarlas?
En línea

Flakito81


Desconectado Desconectado

Mensajes: 519



Ver Perfil
Re: [AYUDA] Listas anidadas?
« Respuesta #3 en: 5 Noviembre 2014, 03:10 am »

Pues igual que anades enfermos :)
Imagina algo tal que:
Código
  1. struct T_enfermedad
  2. {
  3.  char nombre[32]
  4.  struct T_enfermedad *sig;
  5. }
  6.  
  7. struct T_enfermo
  8. {
  9.   char nombre[32];
  10.   int edad;
  11.   //-- resto de campos
  12.   struct T_enfermedad *enfermedades;
  13.   struct T_enfermo *sig;
  14. }
  15.  
  16. int Nuevo_Enfermo( T_enfermo *Lista)
  17. {
  18.     struct T_enfermo *p;
  19.     p = (struct T_enfermo *) malloc (sizeof(struct T_enfermo));
  20.     if (!p) return -1; // no se pudo reservar memoria
  21.     p->enfermedades = NULL; //no tiene enfermedades
  22.     p->sig = NULL;
  23.    // lees la informacion del paciente y la guardas en p
  24.  
  25.    //-- ¿quieres añadir alguna enfermedad ? Si la respuesta es sí
  26.    Nueva_Enfermedad(p->enfermedades);
  27.    //---
  28.  
  29.    // añadir por el principio de la lista
  30.    if (Lista != NULL)
  31.      p->sig = Lista;
  32.    Lista = p;        
  33. }
  34.  
  35. int Nueva_enfermedad(T_enfermedad *lista)
  36. {
  37.  struct  T_enfermedad *p;
  38.   p = (struct T_enfermedad *) malloc (sizeof(struct T_enfermedad));
  39.   p->sig =NULL;
  40.   //-- pedir informacion y ponerla en p
  41.  
  42.    if (lista != NULL)
  43.      p->sig = lista;
  44.    lista = p;  
  45. }
  46.  
  47.  
  48. int main()
  49. {
  50.  struct  T_enfermo *Lista = NULL;
  51.  
  52.   // -- tu codigo
  53.  // -- opciones
  54.   switch {
  55.      case 1:
  56.         Nuevo_Enfermo(Lista);
  57.         break;
  58.  
  59.  
  60.   };
  61.  
  62. }
  63.  

obviamente es un codigo de referencia, va a contener algun error.
Si quieres añadile mas enfermedades lo unico que tienes que hacer es localizar al enfermo recorriendo la lista y luego le pasas el puntero 'enfermedades'.

Un saludo!

PD:Cambia el nombre de las funciones porque esta noche no estoy muy original ;)
« Última modificación: 5 Noviembre 2014, 03:18 am por Flakito81 » En línea

carlosabcs18

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: [AYUDA] Listas anidadas?
« Respuesta #4 en: 5 Noviembre 2014, 03:27 am »

Graaaaaaaacias bro, creo que voy captando la idea :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
listas desplegables anidadas
PHP
m0m0 4 6,359 Último mensaje 19 Mayo 2009, 15:18 pm
por cassiani
Ayuda Acerca De Listas y Listas Circulares (Revienta Memoria :S)
Programación C/C++
Gerik 0 6,042 Último mensaje 12 Septiembre 2010, 01:49 am
por Gerik
Ayuda con borrado en estructuras anidadas
Programación C/C++
JHodges 8 3,724 Último mensaje 11 Junio 2015, 04:24 am
por rir3760
[Ayuda] Estructuras anidadas, registro. Lenguaje C « 1 2 »
Programación C/C++
neron991 11 10,208 Último mensaje 9 Julio 2015, 10:07 am
por mester
[Consulta] Índice en listas anidadas (Python)
Scripting
evanescense 4 8,499 Último mensaje 25 Junio 2016, 03:59 am
por peter_lyon
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines