ignacio666 Posted September 6, 2011 Report Share Posted September 6, 2011 (edited) quiero saber porque se cae este programa cuando ingreso un nombre, quiero que me funcione con las dos estructuras del código expuesto mas abajo no con una sola que este el nombre y el nodo siguiente, o sea quiero saber donde esta el error en este código no me digan que sale mejor con una estructura, porque lo se. Pero que pasa cuando tienes por ejemplo en una estructura con diversos datos como: nombre, rut, edad, altura, peso, sexo, teléfono, etc; y en otra estructura tienes un puntero a esa estructura y el nodo siguiente... a eso voy....gracias por su tiempo y si es que me pudiesen ayudar ya que soy una mierda... #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> struct lista //Declaracion de la estructura { char nombre[20]; }; typedef struct nodo elemento; struct nodo{ struct lista *caca; elemento *sig; }; elemento *inicio, *temp1, *temp2; main() { char datos[20],k; //Variables locales int contador; contador = 0; do { printf("Escriba un nombre --> "); gets(datos); contador++; if (contador==1) // Si el nodo es el primero { inicio = (elemento*)malloc(sizeof(elemento)); strcpy(inicio->caca->nombre,datos); inicio->sig = NULL; } else // Si ya existe al menos un nodo { temp1 = inicio; while(temp1->sig!=NULL) temp1 = temp1->sig; temp2 = (elemento*)malloc(sizeof(elemento)); strcpy(temp2->caca->nombre,datos); temp2->sig=NULL; temp1->sig=temp2; } printf("Otro nombre [s/N]?"); k=toupper(getch()); } while (k!='N'); printf("\n\nElementos de la lista\n"); temp1 = inicio; // Mostrar el contenido de la lista while (temp1->sig!=NULL) { printf(" %s ",temp1->caca->nombre); temp1 = temp1->sig; } printf("%s ",temp1->caca->nombre); // Muestra el ultimo elemento getch(); } Edited September 6, 2011 by r_kstro agregar bbcode code Link to comment Share on other sites More sharing options...
Sting_Master Posted September 6, 2011 Report Share Posted September 6, 2011 (edited) temp1 = inicio;while(temp1->sig!=NULL)temp1 = temp1->sig;temp2 = (elemento*)malloc(sizeof(elemento));strcpy(temp2->caca->nombre,datos);temp2->sig=NULL;temp1->sig=temp2; El bucle del while termina cuando temp1->sig es Nulo, despues dice que temp1=temp1->sig, es decir temp1 es NULL, el copiado y el asignado de memoria esta bien, pero despues colocas temp1->sig=temp2, pero temp1 es NULL, entonces ahi se cae porque no enlaza con nada :P. Edited September 6, 2011 by Sting_Master Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now