70,023
社区成员




#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct BTNode//定义结点类型
{
char data;
struct BTNode *lchild;
struct BTNode *rchild;
}BTNode;
void create(BTNode **p)//创建二叉树,输入'^'表示空
{
char a;
getchar();
scanf("%c",&a);
if(a=='^')
p=NULL;
else
{
*p=(BTNode *)malloc(sizeof(BTNode));
(*p)->data=a;
create(&((*p)->lchild));
create(&((*p)->rchild));
}
return;
}
void output(BTNode *p)//先序输出二叉树的内容
{
if(p)
{
printf("%c\n",p->data);
output(p->lchild);
output(p->rchild);
}
}
int main()//主函数
{
BTNode *p;
printf("please input data:");
create(&p);
output(p);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct BTNode//定义结点类型
{
char data;
struct BTNode *lchild;
struct BTNode *rchild;
}BTNode;
char get_char()
{
char a;
scanf("%c",&a);
fflush(stdin);
return a;
}
void create(BTNode *&p,char a)//创建二叉树,输入'^'表示空,这里用了c++的引用,方便修改p
{
if(a=='^')
p=NULL;
else
{
p=(BTNode *)malloc(sizeof(BTNode));
p->data=a;
create(p->lchild,get_char());
create(p->rchild,get_char());
}
}
void output(BTNode *p)//先序输出二叉树的内容
{
if(p)
{
printf("%c\n",p->data);
output(p->lchild);
output(p->rchild);
}
}
int main()//主函数
{
BTNode *p;
printf("please input data:");
create(p,get_char());
printf("pertrave:");
output(p);
return 0;
}
void create(BTNode *&p)//如果说要在函数里面给P申请动态空间,那你也可以传一个指针的指针呀
{
char a;
a=getchar();
if(a=='^')
p=NULL;
else
{
p=(BTNode *)malloc(sizeof(BTNode));
p->data=a;
create(p->lchild);
create(p->rchild);
}
}
void create(BTNode *&p)//这里一个引用的指针是什么意思? 要么引用要么指针,很是不理解
//要修改P的内容指针和引用都可以修改啊。。。
{
char a;
a=getchar();
if(a=='^')
p=NULL;
else
{
p=(BTNode *)malloc(sizeof(BTNode));
p->data=a;
create(p->lchild);
create(p->rchild);
}
}