我正在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
的下一个节点的优先级属性?
答案 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;
};