Ουρά (δομή δεδομένων): Διαφορά μεταξύ των αναθεωρήσεων

Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
Γραμμή 20:
 
==Παράδειγματα ουρών==
 
=== Παράδειγμα υλοποίησης με C ===
Το παρακάτω παράδειγμα προγραμματισμού στην γλώσσα [[C (γλώσσα προγραμματισμού)|C]] χρησιμοποιεί μια δυναμική λίστα και δυναμική εκχώρηση μνήμης:
 
<source lang="c">
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <time.h>
 
struct queue_node {
struct queue_node *next;
int data;
};
 
struct queue {
struct queue_node *first;
struct queue_node *last;
};
 
int enqueue(struct queue *q, const int value) {
struct queue_node *node = (struct queue_node *)malloc(sizeof(struct queue_node));
if (node == NULL) {
errno = ENOMEM;
return 1;
}
node->data = value;
if (q->first == NULL)
q->first = q->last = node;
else {
q->last->next = node;
q->last = node;
}
node->next = NULL;
return 0;
}
 
int dequeue(struct queue *q, int *value) {
if (!q->first) {
*value = 0;
return 1;
}
*value = q->first->data;
struct queue_node *tmp = q->first;
if (q->first == q->last)
q->first = q->last = NULL;
else
q->first = q->first->next;
 
free(tmp);
return 0;
}
 
void init_queue(struct queue *q) {
q->first = q->last = NULL;
}
 
int queue_empty_p(const struct queue *q) {
return q->first == NULL;
}
 
int main(void) {
struct queue Q;
init_queue(&Q);
srand(time(NULL));
unsigned int k = 0;
while (k < 100) {
enqueue(&Q, (rand() % 100) + 1); /* Fill with random numbers from 1 to 100 */
++k;
}
k = 1;
while (!queue_empty_p(&Q)) {
int data;
dequeue(&Q, &data);
printf("(%d) %d\n", k, data);
++k;
}
 
putchar('\n');
system("pause");
return 0;
}
</source>
 
=== Παράδειγμα υλοποίησης με C++ ===
{{Κύριο|Queue (C++)}}