構造体とポインタについての質問です。関数の定義は変えないでmain関数のポインタを弄りたいです。
###条件
関数の定義は変えないでください
c
1struct node { 2 int key; 3 struct node *parent, *left, *right; 4}; 5 6struct node *new_node(int key) { 7 struct node *p; 8 9 p = (struct node*)malloc(sizeof(struct node)); 10 11 p->key = key; 12 13 p->left = NULL; 14 p->right = NULL; 15 p->parent = NULL; 16 17 return p; 18} 19 20int insert(int key, struct node *root){ 21 22 while(root != NULL){ 23 24 if (key > root->key) { 25 root = root->right; 26 }else if (key < root->key) { 27 root = root->left; 28 }else{ 29 return 0; 30 } 31 32 } 33 root = new_node(key); 34 35 return 1; 36} 37 38int main(){ 39 40 struct node *root = NULL; 41 int key = 0; 42 43 printf("ask:"); 44 scanf("%d",&key); 45 46 insert(key, root); 47 ////////////ここでデバッグしたら/////////////// 48 free(root); 49 50 return 0; 51} 52
デバッグの結果
root = NULL
###考察
関数の変数にnew_nodeをしているだけ
本当に関数の「定義」を変えてはいけないのでしょうか?(それでは「関数全体を書き換えてはいけない」ということと等しいので、何もできません)
回答3件
あなたの回答
tips
プレビュー