大佬们,我是哪里的细节出问题了。

为什么会出现这几个问题呀,这是我的代码,求指点。

#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