Título: problema con una lista Publicado por: m@o_614 en 1 Mayo 2014, 21:35 pm Saludos
Tengo la siguiente función que se llama crearArchivoTABSIM() la cual se encuentra dentro de un ciclo en el main, y cada vez que entra al ciclo se le asigna a la funcion una cadena que se llama etiqueta(char *etiqueta). Código
y dentro de la función crearArchivoTABSIM() se encuentra la función crearListaEtiquetas() que me va a crear una lista simplemente ligada que tiene un campo char *etiqueta,y que cada vez que le envie una etiqueta me la va a insertar al principio, y después de esta esta la función imprimirEtiquetas() que me va a ir imprimiendo las etiquetas Código como por ejemplo: Si le mando las etiquetas ET1, ET2,ET3,ET4 deberia imprimir 1) ET1 2)ET1 ET2 3)ET1 ET2 ET3 4)ET1 ET2 ET3 ET4 pero el problema que tengo es que solo me esta imprimiendo el primer nodo, o sea a donde apunte la cabeza de lista y no se que estoy haciendo mal, previamente ya habia hecho listas ligadas y no me habian dado ningun problema de antemano gracias Título: Re: problema con una lista Publicado por: rir3760 en 2 Mayo 2014, 06:11 am Tengo la siguiente función que se llama crearArchivoTABSIM() la cual se encuentra dentro de un ciclo en el main, y cada vez que entra al ciclo se le asigna a la funcion una cadena que se llama etiqueta(char *etiqueta). Problemas con la función "crearArchivoTABSIM" hay varios:* No cierras el archivo. * Solo abres el archivo para agregar una linea de texto al final de el, en ese caso ábrelo en el modo "a" y ya que se trata de modo texto se pueden sustituir las dos llamadas a fwrite por una sola a fprintf: Código * No liberas la memoria reservada para la lista. Si le mando las etiquetas ET1, ET2,ET3,ET4 Completamente normal ya que:deberia imprimir 1) ET1 2)ET1 ET2 3)ET1 ET2 ET3 4)ET1 ET2 ET3 ET4 pero el problema que tengo es que solo me esta imprimiendo el primer nodo 1) La función "crearListaEtiquetas" tiene un nombre errado: no crea etiquetas, crea solo una. 2) Las variables declaradas en una función se destruyen al terminar esta, para preservar sus valores estos se deben comunicar a la función llamante (main en tu caso en relación a "crearArchivoTABSIM") mediante parámetros de salida o su valor de retorno, como no utilizas ninguno el resultado es: cuando termina la función "crearArchivoTABSIM" la lista (con un solo nodo) se pierde. Un saludo |