0

我制作了一个二叉树,其中基本上有三层结构:

typedef struct l {
  char n[15];
  struct l *next;
} List;

typedef struct {
  char rname[20];
  char lname[20];
  List number;
} info;

typedef struct tree {
  info thisnode;
  struct tree *left;
  struct tree *right;
} Tree;

在这行代码上

 t->thisnode.number = t->thisnode.number.next;

我收到标题中提到的错误

通常使用递归数据结构,这些类型的分配工作,尽管接下来有类型 struct *l。谁能帮我弄清楚为什么在这种情况下它不起作用?

我也会本能地把上面的线作为

 t->thisnode.number = t->thisnode.number->next;

但我的编译器似乎更不喜欢这样。

4

2 回答 2

0

好吧,这些类型肯定是不兼容的。

nextin 字段的类型numberstruct l *,但numberin的类型infoList,它是 的别名struct l,即整个结构,而不仅仅是指向它的指针。所以你试图将一个指针分配到一个不会飞的整个结构中。

看来您缺少指针级别,也许中的number字段info应该是List *

于 2013-01-07T13:37:45.917 回答
0

表达式t->thisnode.number是类型List(ie struct l)t->thisnode.number->next而是类型struct l *(好吧,如果它实际上是在您使用指针访问语法访问非指针成员时编译的)。

于 2013-01-07T13:38:36.210 回答