Så jeg har lest gjennom K & R C bok og har et spørsmål .. i sjette kapittel på structs på side 140-141, er det kode som ser slik ut (jeg tok ut noen av de mer irrelevante deler)
/*
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;
}
Og min forvirring er i main () -funksjonen på root = ADDNODE (root, ord)
Hvis Addnode returnerer en peker til den nylig lagt node (eller til noden som ordet er på hvis det allerede int han tre), ville ikke det miste alle data over treet? Bør ikke rot opphold som roten av treet?
Takk!













