#include #include // Ein Queue Element struct QueueElem { QueueElem* next; // Zeiger auf nächstes Element QueueElem* previous; // Zeiger auf vorheriges Element int value; // Daten zu diesem Element } ; // Eine Queue struct Queue { int count; // Anzahl Elemente in der queuee QueueElem* first; // Zeiger auf erstes Element der queue QueueElem* last; // Zeiger auf letztes Element der queue } ; // Initialisiere eine queue void empty_queue (Queue* l) { l->first = 0; // 0 ist keine gueltige Adresse: queue ist leer l->last = 0; l->count = 0; } // Fuege neues Element am Ende der Schlange ein void add_to_queue(Queue* queue, QueueElem* elem) { if (queue->last == 0) { queue->first = elem; queue->last = elem; } else { queue->last->next = elem; elem->next = 0; elem->previous = queue->last; queue->last = elem; } queue->count = queue->count + 1; } // Remove last Element from queue and return it QueueElem* remove_from_queue (Queue* queue) { if (queue->first == 0) { return 0; // return null if queue is empty } QueueElem* p; p = queue->first; queue->first = p->next; queue->count = queue->count -1; return p; } // print a queue void print_queue(Queue* queue) { // index pointer QueueElem* current = queue->first; printf("Queue: "); // print every element until the last while (current != 0) { printf("%d ", current->value); current = current->next; } printf("\n"); } int main() { // create a queue Queue* queue = new Queue(); empty_queue(queue); // and some elements for (int i = 0; i < 100000; i++) { QueueElem* elem = new QueueElem(); elem -> value = rand(); add_to_queue(queue, elem); } // and remove them again for (int i = 0; i < 100000; i++) { remove_from_queue(queue); } // check if queue is empty print_queue(queue); }