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();
}