struct node* NewNode(int data)
{
struct node* node = new(struct node);
node->data = data;
node->left = NULL;
node->right = NULL;
return(node);
}
我在函数的第一行收到此错误。无法弄清楚什么是错的? 感谢。
答案 0 :(得分:3)
“new”关键字暗示这是C ++。在C ++中,“struct TYPENAME”构造很大程度上已经过时,您可以简单地使用TYPENAME。 从命名结构中定义类型名称的C方式在C ++中是隐式的。
node* NewNode(int data)
{
node* pnode = new node;
pnode->data = data;
pnode->left = NULL;
pnode->right = NULL;
return(pnode);
}
如果这是C ++,应该可以正常工作。请注意,对类型和变量使用相同的名称不是一个好主意。一些命名约定(匈牙利语或任何东西)有帮助。
答案 1 :(得分:2)
此代码在Comeau try-it-out下完全合并:
#define NULL 0
struct node
{
int data;
struct node* left;
struct node* right;
};
struct node* NewNode(int data)
{
struct node* node = new(struct node);
node->data = data;
node->left = NULL;
node->right = NULL;
return(node);
}