while(p)变死循环了吧,判断不为空就可以了
你写 while 干啥?只需要在最开始加上 p == null 就 return 就行了
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct treenode
{
char data;
struct treenode * lchild,* rchild;
}twotree,*tree;
void Createfirstree(tree &q) //先序创建二叉树
{
char ch;
scanf("%c",&ch);
if(ch=='*') q=NULL;
else
{
q=(twotree*)malloc(sizeof(struct treenode));
q->data=ch;
Createfirstree(q->lchild);
Createfirstree(q->rchild);
}
}
void firstprintf(tree p) //先根打印二叉树
{
if(p)
{
printf("%c",p->data);
firstprintf(p->lchild);
firstprintf(p->rchild);
}
}
int main()
{
tree s;
Createfirstree(s);
firstprintf(s);
return 0;
}
// 124**5**36**7**
要不你用引用吧,别用指针。
你使用指针,先序创建二叉树就会出错,按理来说指针可以用,但是我也不知道为什么就是建不了树。
源文件后缀为cpp,哪里出问题啦?
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y
也许对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html