У меня есть проблема с struct. Я создал структуру и функцию, чтобы попытаться понять, как работает структура данных дерева. Теперь проблема заключается в том, что когда я пытаюсь скомпилировать следующий код с помощью команды gcc test.c -o test
, компилятор всегда возвращает сообщение об ошибке error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token
, пожалуйста, дайте мне несколько Помогите.Проблемы с использованием «struct» в plain c
#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;
}
BTW, 'BiTNode' в' typedef struct BiTNode' является избыточным. – HolyBlackCat
Вы ожидаете, что 'root' будет bon NULL после' createTree (root); 'statement? –
@HolyBlackCat, на самом деле это не избыточно. Если вы вставляете код и компилируете его (после определения объявления как @Ashalynd и @Elliott), то явное 'BiTNode' в' typedef struct BiTNode' предотвращает следующее предупреждение компилятора в двух строках: 'createTree (T-> lchild); createTree (T-> rchild); ':' предупреждение: несовместимые типы указателей, передающие 'struct BiTNode *' в параметр типа «BiTree». По крайней мере, об этом говорит мой компилятор. Попробуйте. –