Ver Mensaje Individual
  #1  
Antiguo 26-06-2012
woduro woduro is offline
Miembro
 
Registrado: sep 2006
Posts: 16
Reputación: 0
woduro Va por buen camino
Exclamation apuntadores a apuntadores

Hola amigos, tengo un problema con c++, hice un codigo que supuestamente funciona al correrlo en frio sin embargo en el compilador es otra historia, el problema es con apuntadores.

estoy creando un arbol a partir de un archivo, el cual tiene el siguente formato: padre nombre sexo edad, el arcivo es leido a la perfección y se crea un nuevo nodo en el cual se ingresan los datos del registro, el nodo tiene la siguiente estructura:

struct persona{char nombre[10];
char sexo;
unsigned int edad;};

struct nodo{persona info;
nodo *i,*c,*d;
};

nodo *raiz;


//una vez leido cada registro se llama a la funcion ingresa(&raiz,nuevo,padre);




int ingresa(nodo **rz, nodo *nuevo, char padre[10]){ // rz recibe la dirección de la raiz, nuevo al nuuevo nodo y padre al nombre del padrenodo *r=*rz; // r es una variable apuntador a nodo donde asigno el valor al cual apunta rz para poder trabajar con el// el problema es que por alguna razón al hacer la asignación de r=*rz donde r deberia recibir el valor de la raiz, lo que recibe
// es el valor de nuevo

if(r==NULL){
r=nuevo; *rz=r; return 1;
//asigno el valor de r a la dirección rz osea a la raiz, a pesar de que este es el unico sitio donde se hace
// esta asignación y de que aquientra una sola vez el valor de la raiz cambia siemprea al ultimo nodo// "procesado"
}else{

if(r->info.nombre==padre){
//esto nunca se cumple porque r->info.nombre tiene el mismo valor que nuevo->info.nombre

// aqui va el codigo de la insercion recursiva el cual es irrelevante pues el problema esta en r

//la llamada recursiva es asi ingresa(&r->i,nuevo,padre) para r->i, r->c, r->d pero nunca llega hasta aqui...

}
}



el caso es que no se crea el arbol y siempre el valor de la raiz es el ultimo nodo procesado, alguien tiene alguna idea de por que ocurre esto o como solucionarlo??
Responder Con Cita