Coada (sau queue) este o structură de date abstractă, în care operația de adăugare se realizează la un capăt, iar cea de eliminare la capătul celălalt.
! Coada ne permite, în timpul operațiilor, să lucrăm doar cu elementul aflat la începutul cozii.
Utilizari
Coada se foloseste atunci când dorim să prelucrăm date într-o ordine precisă, în funcție de identificarea acestora.
Modalități de implementare a cozii:
1. Implementare statică, folosind tablouri
Declaratie:
const int dimensiune = 1000; //dimensiune coada
int stanga, dreapta; //stanga > dreapta => coada vida; stanga <= dreapta => coada nevida
TIP_DATE coada[dimensiune];//declararea cozii
Avem nevoie de stanga si de dreapta pentru a putea mări, respectiv lucra cu primul element din coadă. Aceste variabile pot avea, desigur, alte denumiri.
Inițializare coadă:
stanga = 1;
dreapta = 0;
În acest moment avem o coadă vidă.
Adăugarea unei valori în coadă:
dreapta++;
coada[dreapta] = val;
După ce am mărit dimensiunea cozii, putem spune că avem un numar egal cu diferenta dintre dreapta și stânga de elemente. Valoarea trebuie să fie reprezentat de tipul de date care pot fi introduse în coadă (in funcție de declarație).
Ștergerea primului element din coadă:
stanga++;
Primul element nu va mai putea fi accesat după ce variabila stanga va fi mărită.
Prima valoare din coada:
coada[stanga]
Exemplu de folosire a cozii prin afișarea elementelor introduse în coadă.
#include <iostream>
using namespace std;
int main()
{
const int dimensiune = 300;
int stanga, dreapta, coada[300];
stanga = 1;
dreapta = 0;
int n = 4; //presupunem ca vrem sa introducem 4 valori;
while (dreapta < n)
{
dreapta++;
cin >> coada[dreapta];
}//au fost citite cele n elemente ale cozii.
while (stanga <= dreapta)
{
cout << coada[stanga]<<" ";
stanga++;
}//se va afisa, in bucla, primul element al cozii apoi va fi considerat eliminat.
return 0;
}
După executarea codului, de exemplu 7 3 5 0, in consola vor aparea pe rând elementele cozii - 7 3 5 0 conform exemplului.
2. Implementarea cozii folosind librăria Queue
Includere librărie:
#include <queue>
Declaratie si verificare daca o coada este vidă:
queue<TIP_DATE> coada;//unde "coada" este numele cozii.
coada.empty(); // returneaza valorile 1 daca e vida sau 0 daca e nevida
Adaugarea unei valori in coada:
coada.push(VAL); //unde val este valoarea pe care doriti s-o adaugati.
Eliminarea unui element de pe prima pozitie:
coada.pop(); //elimina prima valoare din coada
Prima valoare din coadă:
coada.front() //returneaza prima valoare din coada.
Exemplu de folosire a cozii prin afișarea elementelor introduse în coadă.
#include <iostream>
#include <queue>
using namespace std;
int main()
{
queue<int> coada;
int n = 5;//consideram ca dorim sa prelucram 5 elemente din coada.
for (int i = 0; i < n; i++)
{
int q;
cin >> q;
coada.push(q);
}//adaugam valori in coada
while (!coada.empty()) //cat timp coada.empty() == 0
{
cout << coada.front() << " ";
coada.pop();
}//afisarea si stergerea valorilor din coada.
return 0;
}
După executarea codului, de exemplu 69, 24, 55, 33, 10, in consola vor aparea pe rând elementele cozii - 69, 24, 55, 33, 10 conform exemplului.