0
#include<stdio.h>
#include<stdlib.h>

typedef struct              //create a pointer structure
{
int data;
struct node *left;
struct node *right;
} node;

node *insert(node *root, int x);

//Insert Function
node *insert(node *root, int x)    //Line 53        
{    
    if(!root)
    {
        root = new_node(x);
        return root;
    }

    if (root->data > x)
    {
        root->left = insert(root->left, x);   //Line 63
    }

    else 
    {
        root->right = insert(root->right, x);  // Line 68
    }

    return root;
}

コンパイル中に次のエラーが発生します。

: 関数「挿入」内:

:63:3: 警告: 互換性のないポインター型から 'insert' の引数 1 を渡しています [デフォルトで有効]

:53:7: 注: 'struct node *' が必要ですが、引数の型は 'struct node *' です</p>

:63:14: 警告: 互換性のないポインター型からの代入 [デフォルトで有効]

:68:3: 警告: 互換性のないポインター型から 'insert' の引数 1 を渡しています [デフォルトで有効]

:53:7: 注: 'struct node *' が必要ですが、引数の型は 'struct node *' です</p>

:68:15: 警告: 互換性のないポインター型からの代入 [デフォルトで有効]

  1. 挿入関数の最初の引数が、渡したものと互換性がないのはなぜですか?
  2. 「構造体ポインタ」にポインタを割り当てるにはどうすればよいですか?
4

1 に答える 1

0

構造体定義を次のように変更します

struct node             //create a pointer structure
{
    int data;
    struct node *left;
    struct node *right;
};

関数プロトタイプを

struct node *insert(struct node *root, int x);
于 2013-03-08T06:17:37.920 に答える