编译错误,看了好久看不出来哪里出问题
//编译错误,看了好久看不出来哪里出问题,还请大佬解答#include <stdio.h>
#include<malloc.h>
typedef struct tree{
char date;
tree* left;
tree* rigth;
}*treenode;
void creattree(treenode T)
{
char str;
scanf("%c",&str);
if(str=='#')
{
str=NULL;
}
else
{
tree* T=(tree*)malloc(sizeof(tree));
T->date=str;
creattree(T->left);
creattree(T->rigth);
}
}
void preTraverse(treenode T)
{
if (T)
{
printf("%d",T->date);
preTraverse(T->left);
preTraverse(T->rigth);
}
}
int main(int argc, char *argv[])
{treenode T;
creattree(T);
preTraverse(T);
return 0;
} void creattree(treenode T)
{
. . . . . .
str=NULL;
改为
void creattree(treenode T)
{
. . . . . .
str=0; 注意哦,如果在某个函数中要对一个结构进行修改,最好传入指针或者引用的格式 黎羽轩 发表于 2022-7-22 09:38
注意哦,如果在某个函数中要对一个结构进行修改,最好传入指针或者引用的格式
好的,但是我也不太理解,那我定义对了吗? 直接把代码贴出来,你看下哪里改动了吧
#include <stdio.h>
#include <malloc.h>
typedef struct tree
{
char date;
struct tree *left;
struct tree *rigth;
} * treenode;
void creattree(treenode T)
{
char str;
scanf("%c", &str);
if (str == '#')
{
str = NULL;
}
else
{
struct tree *T = (treenode *)malloc(sizeof(treenode));
T->date = str;
creattree(T->left);
creattree(T->rigth);
}
}
void preTraverse(treenode T)
{
if (T)
{
printf("%d", T->date);
preTraverse(T->left);
preTraverse(T->rigth);
}
}
int main(int argc, char *argv[])
{
treenode T;
creattree(T);
preTraverse(T);
return 0;
}
页:
[1]