ツリーデータ構造を含むプロジェクトを開始するためにここで見つけた次のコードで作業しています。この関数の理解に問題がある
struct node{
int ID;
struct node* next;
struct node* child;
};
typedef struct node node;
node* new_node(int);
node* add_sibling(node*, int);
node* add_child(node*, int);
int main()
{
int i;
node *root = new_node(0);
for (i = 1; i <= 3; i++)
add_child(root, i);
}
node * new_node(int ID)
{
node* new_node =(node*) malloc(sizeof(node));
if (new_node) {
new_node->next = NULL;
new_node->child = NULL;
new_node->ID = ID;
}
return new_node;
}
node* add_sibling(node* n, int ID)
{
if (n == NULL)
return NULL;
while (n->next)
n = n->next;
return (n->next = new_node(ID));
}
node* add_child(node* n, int ID)
{
if (n == NULL)
return NULL;
if (n->child)
return add_sibling(n->child, ID);
else
return (n->child = new_node(ID));
}
私はC/C++の初心者であり、一般的にプログラミングしています。私は、add_child機能以外のコードについてはすべて理解していると思います。この関数はノードへのポインタを返すようですが、mainで呼び出されると、void関数であるかのように呼び出されるようです。私は、私はコードで実装をnew_nodeはvoid関数としてadd_child書くために呼び出されるか、またはどのようにこのように
*root = add_child(root,i);
を関数を呼び出すと考えられますが、これらの変更の結果の両方のエラーで(しないように言及しているだろう見つけたは作品です)。私は何が欠けていますか?
あなたは値を返すメソッドを呼び出すことはできません。彼は価値を返しました。あなたの主人が何をしているのですか? – litelite
著者がこのように書いたと思う理由はありますか? – user178831
彼はメインで戻り値を使用する必要はありませんでしたが、他の状況では有用かもしれません。 – litelite