Jump to content

Ayuda con listas enlazadas en C


Recommended Posts

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 by r_kstro
agregar bbcode code
Link to comment
Share on other sites

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 by Sting_Master
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...