第2个程序错在什么地方?

来源:百度知道 编辑:UC知道 时间:2024/06/09 01:28:20
第2个程序错在什么地方?

程序1没有语法错误,
程序2只是加了一个Create(struct BiTree *p),就报语法错误Type mismatch in redeclaration of "Create_Em"

到底是怎么回事?
还望高手指点。

程序1:

#define Object char
#define InputType "%c"
#define PrintType "%c"
#define Change_Object ' '
#include <stdio.h>

struct Element
{
Object e;
struct Element *LChild;
struct Element *RChild;
};

struct BiTree
{
struct Element *Root;
};

struct Element *Create_Em()
{
struct Element *Em;
Object New_e;
scanf(InputType, &New_e);
if(New_e==Change_Object) return NULL;

Em=malloc(sizeof(struct Element[1]));
Em->e=New_e;
Em->LChild=Create_Em();
Em->RChild=Create_Em();
return Em;
}

main()
{
struct BiTree T;
clrscr();
T.Root=Create_Em();

你得将
Create(struct BiTree *p)
struct Element *Create_Em()
上面这两个声明调个位置,变成这样:
struct Element *Create_Em()
{
struct Element *Em;
Object New_e;
scanf(InputType, &New_e);
if(New_e==Change_Object) return NULL;

Em=malloc(sizeof(struct Element[1]));
Em->e=New_e;
Em->LChild=Create_Em();
Em->RChild=Create_Em();
return Em;
}

Create(struct BiTree *p)
{
p->Root=Create_Em();
}

楼上说的对
还有
Create(struct BiTree *p)
{
p->Root=Create_Em();
}
有没有返回类型?