我想使用节点创建队列,因为它在创建时将是空的,因此我希望头和尾都指向NULL。但是当我尝试执行此操作时,标题出现错误。有任何想法吗?
typedef struct node node_t;
typedef struct queue queue_t;
struct node{
void *info;
struct node *next;
};
struct queue{
node_t *head;
node_t *tail;
};
queue_t* new_queue(void){
queue_t* q = malloc(sizeof(queue_t));
if (q == NULL)
return NULL;
q->tail = NULL;
q->head = NULL;
return q;
}
谢谢!
编辑:这是我尝试编译时遇到的错误:
(gcc queue.c -Wall -pedantic -std = c99 -g -o q)
unt.c:在“ new_queue”函数中:
unt.c:30:31:错误:将“ sizeof”无效地应用于不完整的类型“ queue_t”
queue_t * q = malloc(sizeof(queue_t));
^
unt.c:33:6:错误:将指针解引用为不完整类型
q-> tail = NULL;
^
unt.c:34:6:错误:将指针解引用为不完整类型
q-> head = NULL;
^
unt.c:35:2:错误:预期的声明或输入末尾的语句
返回q;
^
最佳答案
对我来说,编译就可以了。尝试将typedef移至struct声明下方
struct node{
void *info;
struct node *next;
};
struct queue{
node_t *head;
node_t *tail;
};
typedef struct node node_t;
typedef struct queue queue_t;
除此之外,似乎还可以
编辑:
还应该检查一下stdlib和stdio include。