Мне нужна действительно простая очередь для операции FIFO: я уже работал со структурами, поэтому я использовал некоторый старый код, который я изменил для своих целей: но теперь мой компилятор не принимает Node в качестве структуры, и я получил несовместимый указательпроблемы.Надеюсь, что кто-то видит что-то, чего мне не хватает:
КОД:
typedef struct _Node {
Node* next;
Task* element;
} Node;
typedef struct _Queue {
Node* head;
} Queue;
Queue* createQueue() {
Queue* q = (Queue*) calloc(1,sizeof(Queue));
return q;
}
void enqueue(Queue* q, Task* task){
Node* newTask = (Node*) calloc(1,sizeof(Node));
newTask->element = task;
Node* root = q->head;
Node* next = root->next;
if (q) {
while(next) {
root = next;
next = root->next;
}
root->next = newTask;
}
}
Task* dequeue(Queue* q) {
Node* root = q->head;
Task* topTask = NULL;
if(q && root) {
topTask = root->element;
q->head = root->next;
free(root);
}
return topTask;
}
ОШИБКИ:
.6:2: error: unknown type name ‘Node’
Node* next;
^
In function ‘enqueue’:
:23:15: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
Node* next = root->next;
^
c:27:9: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
next = root->next;
^
c:29:14: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
root->next = newTask;
^
c: In function ‘dequeue’:
c:38:11: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
q->head = root->next;
Спасибо заранее,
Tim4497