请教各位:我的二叉树结构定义错哪里了?

来源:百度知道 编辑:UC知道 时间:2024/06/05 10:56:54
#include<stdio.h>

struct BTNode
{
int data;
struct BTNode *left, *right;
};

//前序遍历(递归)
void PreOrder(BTNode* *p)
{
if(p != NULL)
{
printf("%d", p ->data);
PreOrder(p ->left);
PreOrder(p ->right);
}
}
error C2143: syntax error : missing ')' before '*'
error C2143: syntax error : missing '{' before '*'
error C2059: syntax error : ')'
error C2054: expected '(' to follow 'p'
谢谢各位!不吝赐教!
能不能解释一下具体原因呢?
谢谢!

void PreOrder(BTNode* *p)
函数里形参类型少了关键字struct ,应该是struct BTNode *p,即
void PreOrder(struct BTNode *p)

楼上说的有误,前面应该加关键字typedef,才能定义数据类型。没有关键字typedef,那只是定义了一个结构变量,不能用来去声明指针,应如下:
typedef struct BTNode
{
int data;
struct BTNode *left, *right;
}TREE;
void PreOrder(TREE *p)

void PreOrder(BTNode* *p)//BTNode改成struct BTNode
{
if(p != NULL)
{
printf("%d", p ->data);
PreOrder(p ->left);
PreOrder(p ->right);
}
} //把p全面全部加上*或者把**p去掉一个*

BTNode改成struct BTNode:是因为你没有把定义的结构体从新命名,如果你结构体这样定义:
struct BTNode
{
int data;
struct BTNode *left, *right;
}TREE;
就可以void PreOrder(TREE* *p)
把p全面全部加上*或者把**p去掉一个*:是因为你函数传的是二维指针了。