【发布时间】:2014-10-02 01:02:05
【问题描述】:
我在结构方面遇到了一些问题。我创建了一个结构和一个函数来尝试了解树数据结构的工作原理。现在的问题是,当我尝试使用命令gcc test.c -o test 编译以下代码时,编译器总是返回错误消息error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token,请给我一些帮助。
#include <stdio.h>
#include <stdlib.h>
typedef struct BiTNode
{
int data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
void createTree(BiTree &T)
{
int i;
scanf("%d", &i);
if(i == -1)
{
T = NULL;
}
else
{
T = (BiTNode *)malloc(sizeof(BiTNode));
T->data = i;
createTree(T->lchild);
createTree(T->rchild);
}
}
int main(void)
{
BiTNode* root = NULL;
createTree(root);
return 0;
}
【问题讨论】:
-
顺便说一句,
BiTNodeintypedef struct BiTNode是多余的。 -
您是否希望
root在createTree(root);语句之后为空? -
@HolyBlackCat,实际上它并不是多余的。如果您将代码粘贴并编译(在将声明修复为@Ashalynd 和@Elliott 建议之后),那么
typedef struct BiTNode中的显式BiTNode会阻止以下两行编译器警告:createTree(T->lchild); createTree(T->rchild);:warning: incompatible pointer types passing 'struct BiTNode *' to parameter of type 'BiTree'。至少这是我的编译器告诉我的。试一试。 -
你到底想达到什么目的?
-
@DarrenStone 哎呀,你是对的。