#include "queue.h" #include //------------------ private -------------------- struct Node { QueueElement element; struct Node* next; }; struct Node* last = NULL; //--------------- public --------------------- int enqueue(QueueElement element) { struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); newNode->element = element; if (last == NULL) { //The queue is empty. newNode->next = newNode; } else { //The queue is not empty. newNode->next = last->next; last->next = newNode; } last = newNode; //There is allways room for a new node. return 0; } int dequeue(QueueElement *element) { if (last == NULL) { //The queue is empty, return error code (-1). return -1; } else { *element = last->next->element; struct Node* tmp = last->next; if (last->next == last->next->next) { //There is only one node left in the queue. last = NULL; } else { last->next = last->next->next; } free(tmp); return 0; } }