C/Visual C - Problema de punteros

 
Vista:

Problema de punteros

Publicado por J. Oliver Beltran (166 intervenciones) el 27/02/2004 13:25:51
Se que es una tonteria, pero por más vueltas que le doy, no acierto. He definido una lista de la siguiente manera:
typedef struct Nodo{
char *nombre;
int id;
Nodo *sig;
}
declaro un puntero a Nodo: Nodo *Lista
y una función para insertar
void Insertar(Nodo *Lista, Nodo N)
{
Nodo *aux;
if (Lista == NULL)
{
Lista = (Nodo*)malloc(sizeof(Nodo));
Lista->nombre = N.nombre;
Lista->id = N.id;
Lista->sig = NULL;
}
else
{
aux=Lista;
while (aux->sig!=NULL){ aux=aux->sig;} aux->sig = (Nodo*)malloc(sizeof(Nodo));
aux=aux->sig;
aux->nombre = N.nombre;
aux->id = N.id;
aux->sig = NULL;
}
}
Y cuando llamo desde el principal a Insertar, me lo sigue dejando a NULL. Se que es un problema de paso de parametros, pero no atino.
La llamada a insertar es Insertar(Lista,nod);
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema de punteros

Publicado por Nasón (40 intervenciones) el 27/02/2004 17:53:48
¿Has probado a definir la función de forma que te devuelva un puntero?
Podría ser:
Nodo *Insertar(Nodo N)
después creas dentro de la función un puntero a Nodo y haces que te lo retorne al final. La llamada sería tipo: Lista = Insertar(N)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 11
Ha aumentado su posición en 5 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

RE:Problema de punteros

Publicado por zzz (318 intervenciones) el 28/02/2004 05:07:52
Hola! Bueno asi rápido veo algunos detalles.
Yo tuve unos problemas con las listas enlazadas por no definr el null, me dijeron que aunque ya estuviera definido el NULL en una librería que siempre es mejor que yo lo defina
#define NULL 0
otra cosa en la función insertar, no regresa nada, debes de regresar el inicio de la lista, sino pierdes toda la lista, en lugar de poner void pon Nodo y luego regresas el nodo al inicio de la lista
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 11
Ha aumentado su posición en 5 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

continuacion

Publicado por zzz (318 intervenciones) el 28/02/2004 05:10:34
Aparte porque insertas un nodo dentro de otro nodo, mejor pasale los datos y en la funcion le asignas los datos de variables a la estructura, no pongas un tipo de dato nodo.
Yo tengo un programa de listas enlazadas si quieres te lo paso para que veas como lo hice yo. Mandame un correo si lo quieres
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar