Więc Czytałem poprzez książki K & R C i masz pytanie .. w 6 rozdziale na elemencie na stronie 140-141, jest kod, który wygląda następująco (wyjąłem niektóre z bardziej nieistotnych części)
/*
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;
}
A mój zamieszanie jest w funkcji main () w root = addNode (korzeń, słowo)
Jeśli addNode zwraca wskaźnik do nowo dodanego węzła (albo do węzła, że słowo jest, jeśli jej już int on tree), czy nie, że „stracić” wszystkie powyższe dane drzewie? Nie należy wykorzenić pobyt jako korzenia drzewa?
Dzięki!













