C言語でツリーを構築する簡単なコードを書こうとしています。以下は私のコードスニペットです。
#include<stdio.h>
struct node
{
int data;
struct node *left;
struct node *right;
};
int main()
{
struct node *root = newNode(5);
//struct node *root = NULL; working piece
//newNode(&root,5); working piece
if(root == NULL)
{
printf("No root\n");
return 0;
}
//root->left = newNode(4);
//root->right = newNode(3);
//root->left->left = newNode(2);
//root->right->right = newNode(1);
return 0;
}
struct node* newNode(int data)
{
struct node *temp;
temp = (struct node*) malloc(sizeof(struct node));
temp->data = data;
temp->left = NULL;
temp->right = NULL;
return(temp);
}
構造体ノード アドレスを返そうとすると、コンパイラでエラーが表示される
"rightNode.c", line 29: identifier redeclared: newNode
current : function(int) returning pointer to struct node {int data, pointer to struct node {..} left, pointer to struct node {..} right}
previous: function() returning int : "rightNode.c", line 12
しかし、これをコメントしてstruct node* newNode(int data)
、以下のように構造体のアドレスを関数に渡してintを返す関数を定義しようとすると、エラーは表示されません。
int newNode(struct node **root,int data)
{
printf("Inside New Node\n");
return 0;
}
私の知る限り、構造体のアドレスを呼び出し元の関数に返すことは C では合法です。
それはコンパイラと関係があります。
Unix環境でccコンパイラを使用しています
type cc
cc is a tracked alias for /apps/pcfn/pkgs/studio10/SUNWspro/bin/cc
以下は、コンパイルに使用したコマンドですcc rightNode.c
どんな助けでも大歓迎です...