почему моя структура не определена?Очередь в С - PullRequest
0 голосов
/ 07 июня 2018

Мне нужна действительно простая очередь для операции 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...