Así que he estado leyendo el libro de K & R C y tiene una pregunta .. en el sexto capítulo de estructuras en la página 140-141, no hay código que se parece a esto (Saqué algunas de las partes más irrelevantes)
/*
the program loops through a tree looking for some word
if it finds the word itll incremenet the count by 1
if it doesnt itll add a new node
*/
struct node {
char *word;
int count;
struct node *left;
struct node *right;
}
main() {
struct node *root;
char word[1000];
root = NULL;
while(getword(word, MAXWORD) != EOF) /* getword just grabs 1 word at a time from a file of words */
if(isalpha(word[0])) /* isalpha checks to see if it is a valid word */
root = addNode(root, word);
treeprint(root); /* prints the tree */
return 0;
}
struct node *addNode(struct node *p, char *w) {
int cond;
if(p == NULL) {
p = malloc(sizeof(struct node)); /* allocates memory for the new node */
p -> word = strdup(w);
p -> count = 1;
p -> left = p -> right = NULL;
}
else if ((cond = strcmp(w, p -> word)) == 0)
p -> count++;
else if(cond < 0)
p -> left = addNode(p -> left, w);
else
p -> right = addNode(p -> right, w);
return p;
}
Y mi confusión es en la función main () en la raíz = addNode (raíz, palabra)
Si addNode devuelve un puntero al nodo recién añadido (o al nodo de esa palabra es en si su ya int árbol), que no es que perder todos los datos anteriores el árbol? no debe erradicar estancia ya que la raíz del árbol?
¡Gracias!













