update ana, add ipi7
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
#include<stdio.h>
|
||||
#include<cstdlib>
|
||||
|
||||
// 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);
|
||||
}
|
||||
Reference in New Issue
Block a user