[C con Clase] probleimllas con una lista...

Steven Davidson steven en conclase.net
Mie Mayo 30 17:23:48 CEST 2007


Hola Duna,

El pasado 2007-05-30 09:57:39, Duna escribió:

D> Hola.
D> Twngo problemas cuando intento añadir datos a una lista dinámica.
D> Hago consulta a una base de datos mysql y me da el número de resultados que
D> tendrá la lista, pero cuando intento añadir el 2º registro me da error.
D> Os paso el código por si se os ocurre algo.
D> Otra pregunta es que cuando hago el malloc, tengo que añadir un resgistro
D> más para que -> next sea nulo?

Las dos cuestiones están ligadas entre sí. Cuando creas un nuevo nodo, con 'malloc()', no asignas valores al contenido de tal nodo. En el bucle, asignas casi todos los campos del nodo, a excepción del puntero 'next'. Si este nuevo nodo es el último nodo de la lista enlazada, entonces el puntero 'next' debería ser 'NULL'.

Aunque corrijas el error anterior, tendrás otro error después de la primera iteración. El puntero 'consulta' no apuntará a nada, porque será nulo. Lo que tienes que hacer es crear otro nodo el cual deberá ser enlazado o ligado a la lista. Sugiero usar un puntero auxiliar. El algoritmo será algo así:

1. Nodo <- Crear_Nodo()   // Creamos memoria
2. Inicializar_Nodo( Nodo )
3. Nodo <- Asignar_Datos()
4. Ultimo.next <- Nodo    // Agregamos el nodo al final de la lista
5. Ultimo <- Ultimo.next  // Avanzamos el puntero al final de la lista
6. Repetir pasos #1-#6, mientras que no terminemos
7. Terminar


Sugiero consultar nuestro curso de Estructuras Dinámicas de Datos (EDD) acerca de este tema. El capítulo 1 trata de listas abiertas o dinámicamente enlazadas. El enlace es: http://c.conclase.net/edd/index.php?cap=001


Espero que esto te sirva.

Steven


Más información sobre la lista de distribución Cconclase