Hola, estoy haciendo unos programas relacionados con estructuras, en este caso concreto estoy mirando los arboles binarios de búsqueda. Hay una cosa que no sé por qué pasa.
Tomo la siguiente estructura:
Código C:
Ver originaltypedef struct arbol_binario{
int nodo; //valor del nodo padre
struct arbol_binario *ptrIzq; //puntero al nodo izquierdo
struct arbol_binario *ptrDrcho; //puntero al nodo derecho
} nuevoArbol, *ptrNuevoArbol;
Para añadir un nuevo elemento, lo hago con malloc.
Veamos, una vez que tengo un arbol binario construido, si quiero modificar un elemento, por ejemplo el hijo derecho de *arbol podría hacer:
Código C:
Ver originalptrNuevoArbol ptrDir = &(arbol->ptrDrcho);
(*ptrDir) = *arbol2;
y ya donde estaba arbol ahora esta arbol2.
Veamos, lo que no entiendo muy bien es que dirección de memoria hay en arbol, cuando *arbol es el puntero que devuelve malloc al bloque de memoria. Qué hay en expresiones del tipo (&(arbol->ptrDrcho)), osea, donde las declaro y eso. Y además, si esas expresiones son punteros a los punteros a los bloques de memoria, por qué al modificar los bloques a los que apuntan se modifica el arbol? yo creía que ptrDrcho y ptrIzq apuntaban los propios bloques de memoria, con lo cual para eliminar un nodo tendría que hacer apuntar a estos a otro bloque de memoria, pero si cojo y cambio el puntero a dicho bloque a otro bloque diferente, ya se cambia.
No sé si se me entenderá algo, me temo que poco... jej
Un slaudo!