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

Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
→‎C++: παράδειγμα κυκλικής ουράς.. το παράδειγμα με το κοντέινερ queue μετακινήθηκε στο αντίστοιχο άρθρο
Γραμμή 102:
 
=== C++ ===
Ουρές δεδομένων μπορούν να δημιουργηθούν με την χρήση του κοντέινερ <code>[[Queue (C++)|queue]]</code> της [[C++ Πρότυπη βιβλιοθήκη|πρότυπης βιβλιοθήκης]] [[C++]] "<code>[[Queue (C++)|queue]]</code>".
 
Στο παρακάτω παράδειγμα στην C++ έχουμε την υλοποίηση μιας κυκλικής ουράς χρησιμοποιώντας ένα πίνακα σταθερού μεγέθους και μεταβλητές οι οποίες είναι ορατές παντού (global variables). Δεν χρειάζεται δυναμική εκχώρηση μνήμης η οποία θα επηρέαζε την απόδοση του προγράμματος. Αλλάζοντας την θέση της κεφαλής και της ουράς, δεν χρειάζεται να αλλάξουμε τη θέση των υπόλοιπων μελών μέσα στην μνήμη. Είναι το φυσικό παράδειγμα μιας ουράς ανθρώπων στην οποία ο πρώτος μετακινείται στο τέλος της ουράς χωρίς να χρειάζεται κανείς άλλος στην ουρά να αλλάξει θέση.
Γραμμή 124:
int tail=0;
// επιστρέφει 1 σε περίπτωση επιτυχίας, αλλιώς 0
// return 1 if successful, otherwise 0
int enqueue(Node* p) {
if(head!=(tail+1)%QMAX) {
Γραμμή 136:
}
// επιστρέφει 1 σε περίπτωση επιτυχίας, αλλιώς 0
// return 1 if successful, otherwise 0
int dequeue(Node** p) {
if(tail == head) {
Γραμμή 169:
}
// δημιουργία τυχαίου αριθμού από το 1-100
// generate random number from 1-100
int generateRandNum() {
///* initializeτυχαία randomαρχικοποίηση seedρίζας: */
//srand ( time(NULL) );
/* generateτυχαίος numberαριθμός ofσε nodesκάθε μέλος: */
return rand() % 100 + 1;
}
Γραμμή 182:
while(i<=20) {
int rand = generateRandNum();
if(rand<=60) {
{ Node* n = (Node*)malloc(sizeof(Node));
Node* n ->value= generateRandNum(Node*)malloc(sizeof(Node));
n->valuenext=generateRandNum()NULL;
enqueue(n->next=NULL);
enqueue(n);
}
else {
{ Node* p;
if(dequeue(&p)!=0) Node* p;{
iffree(dequeue(&p)!=0);
{}
free(p);
}
}
//printqueue();