誰かが私のコードに間違っていると教えてもらえますか?
リンクリストの最後にノードを挿入するために、ノンリターン関数void
を作成したいとします。最後にリンクリストを挿入して再帰的に挿入する
void insert_tail_Recursively(struct node **phead, int key) {
if (*phead == NULL) {
Node*temp = malloc(sizeof(Node));
temp->data = key;
temp->pLeft = temp->pRight = NULL;
*phead = temp;
} else {
Node*temp = malloc(sizeof(Node));
temp->data = key;
temp->pLeft = temp->pRight = NULL;
/* data more than root node data insert at right */
if ((temp->data > (*phead)->data) && ((*phead)->pRight != NULL))
insert_tail_Recursively((*phead)->pRight, key);
else if ((temp->data > (*phead)->data) && ((*phead)->pRight == NULL)) {
(*phead)->pRight = temp;
}
/* data less than root node data insert at left */
else if ((temp->data < (*phead)->data) && ((*phead)->pLeft != NULL))
insert_tail_Recursively((*phead)->pLeft, key);
else if ((temp->data < (*phead)->data) && ((*phead)->pLeft == NULL)) {
(*phead)->pLeft = temp;
}
}
}
この条件のtemp-> data < (*phead)->のデータはどういう意味ですか?それはどのように「リストの終わり」に関連していますか? –
あなたはどんなエラーを出していますか? –
リストに追加することを求めていますが、コードはツリーに追加することです。 'struct node'の定義はありません。追加した後でも、コードは正しくコンパイルされません。コンパイルエラーを修正してください。ここで意味があります。 – ArturFH