我正在尝试在具有有限节点数的主函数中创建扩展二叉树。
问题是compliler不断显示
错误:从类型'int'
中分配类型'struct node'时的不可用类型
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#define NULLitem (-1)
typedef struct node * link;
struct node {
int item;
link l;
link r;
}
link NEW (int item, link l, link r)
{
link x = malloc(sizeof * x);
x->item = item;
x->l = l;
x->r = r;
return x;
}
void Tprint(link p, int indent)
{
int i;
if (p!=NULL){
Tprint(p->r, indent+4);
for(i=0; i<indent; i++)
printf(" ");
printf("%d\n", p->item);
Tprint(p->l,indent+4);
}
}
int main(void)
{
link T, M, N, z, Root;
z = NEW(NULLitem,NULL,NULL);
Root->item = 6;
T = NEW(5, NULL, NULL);
Root->l = T;
M = NEW(7, NULL, NULL);
Root->r = M;
M->l= NEW(NULLitem, NULL, NULL);
M->r= NEW(9,z,z);
N = NEW(2,z,z);
T->l = N;
T->r = NEW(NULLitem,NULL, NULL);
Tprint(Root,3);
return 0;
}
答案 0 :(得分:0)
错误在第12行(编译器说明全部),&#34;指针来自整数而没有强制转换&#34;如果您更正了程序第12行的错误,该警告将消失。
你实际上忘记了分号:
struct node { int item;
link l;
link r;
}
在大括号后面写一个分号,你的程序应该是:
#include <stdio.h>
#include <stdlib.h>
#define NULLitem (-1)
typedef struct node * link;
struct node { int item;
link l;
link r;
};
link NEW (int item, link l, link r){
link x = malloc(sizeof * x);
x->item = item;
x->l = l;
x->r = r;
return x;
}
void Tprint(link p, int indent){
int i;
if (p!=NULL){
Tprint(p->r, indent+4);
for(i=0; i<indent; i++)
printf(" ");
printf("%d\n", p->item);
Tprint(p->l,indent+4);
}
}
int main(void)
{
link T, M, N, z, Root;
z = NEW(NULLitem,NULL,NULL);
Root->item = 6;
T = NEW(5, NULL, NULL);
Root->l = T;
M = NEW(7, NULL, NULL);
Root->r = M;
M->l= NEW(NULLitem, NULL, NULL);
M->r= NEW(9,z,z);
N = NEW(2,z,z);
T->l = N;
T->r = NEW(NULLitem,NULL, NULL);
Tprint(Root,3);
return 0;
}
输出如下:
-1 9 -1 7 -1 6 -1 5 -1 2 -1
运行没有任何错误。