结构类型的不完整定义

时间:2015-10-22 02:11:20

标签: c struct

我正在C中实施int的优先级排队。我的标题中有struct Node

typedef struct NodeTag {
  int priority;
  int value;
  struct Node *next;
}Node;

现在在我的C文件中,我试图在遍历队列时添加一个新元素,并将内部每个元素的优先级值与新元素进行比较。所以我试着这样做

Node *prev = head;
while(prev->next && prev->next->priority >= priority){
   prev=prev->next;
}
temp->next=prev->next;
prev->next=temp;

但是我收到编译错误说:

incomplete definition of type 'struct Node'

在我的条件下。如何访问prev的下一个节点的优先级属性?

2 个答案:

答案 0 :(得分:2)

我认为你可能已经混淆了哪个是类型名称,哪个是结构名称。

here

next字段声明为Node *struct NodeTag *

这是一个编译片段:

typedef struct NodeTag Node;
struct NodeTag {
  int priority;
  int value;
  Node *next;
};

答案 1 :(得分:1)

typedef struct NodeTag {
  int priority;
  int value;
  struct Node *next; /*this should be struct NodeTag, 
                      at this point Node is still not yet typed*/

  }Node; /*now it is*/

要克服这个,你应该这样做:

typedef struct Node Node;

struct Node{
     int priority;
     int value;
     Node *next; 
 };