为什么会出现这几个问题呀,这是我的代码,求指点。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct tree
{
struct btree *left;
char data;
struct btree *right;
}Btree;
Btree *creatTree()
{
char ch;
ch=getchar();
if(ch == "#")
{
return NULL;
}
else{
Btree *p;
p=(Btree *)malloc(sizeof(Btree));
p->data=ch;
p->left=creatTree();
p->right=creatTree();
return p;
}
}
void show(Btree *p)
{
if(!p)
return;
printf("c",p->data);
if(p->left!=NULL||p->right=NULL){
printf("(");
show(p->left);
if(p->right){
printf(",");
show(p->right);
}
printf(")");
}
}
int main()
{
Btree *p=NULL;
p=creatTree();
show(p);
return 0;
}
typedef struct tree
{
struct btree *left;
char data;
struct btree *right;
}Btree;
这样就对啦,需要加一个类型别名关键字typedef。表示你给结构体tree起了一个别名Btree,Btree就是类型啦,才可以定义函数或变量。
或者你不要用Btree,换成使用tree。因为不加typedef,你的Btree就不是类型名。只有tree是。
定义变量必须用struct tree,Btree只是一个变量,并不是类型;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct tree
{
struct tree *left;
char data;
struct tree *right;
}Btree;
struct tree *creatTree()
{
char ch;
ch=getchar();
if(ch == '#')
{
return NULL;
}
else{
struct tree *p;
p=(struct tree *)malloc(sizeof(Btree));
p->data=ch;
p->left=creatTree();
p->right=creatTree();
return p;
}
}
void show(struct tree *p)
{
if(!p)
return;
printf("c",p->data);
if(p->left!=NULL||p->right==NULL){
printf("(");
show(p->left);
if(p->right){
printf(",");
show(p->right);
}
printf(")");
}
}
int main()
{
struct tree *p=NULL;
p=creatTree();
show(p);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
也许对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y