Ето примерната реализация на опашка, която разглеждахме в часа:
#include <iostream> #include <iomanip> #include <windows.h> using namespace std; // максимален брой елементи в опашката const int N=5; // указател към върха на опашката int head = 0; // указател към края на опашката int tail = 0; // масив за съхранение на елементите на опашката int s[N]; // инициализиране на опашката void init() { head=0; tail=0; for(int i=0;i<=N;i++) s[i]=0; } // проверка дали опашката е празна bool isEmpty() { return head==tail; } // проверка дали опашката е пълна bool isFull() { return ((tail+1)%N)==head; } // запис на стойност в опашката bool push(int X) { bool ok = !isFull(); if (ok){ s[tail] = X; tail++; tail%=N; } return ok; } // извличане на стойност от опашката bool pop(int &X) { bool ok = !isEmpty(); if (ok) { X = s[head]; head++; head%=N; } return ok; } // печат на опашката void print() { cout<<endl<<"head : "<<head<<" tail: "<<tail<<" broi: "<<broi<<"\nqueue: | "; if(!isEmpty()) if (head<=tail) for(int i=head;i<=tail;i++) cout<<setw(3)<<s[i]<<" | "; else { for(int i=head;i<N;i++) cout<<setw(3)<<s[i]<<" | "; for(int i=0;i<=tail;i++) cout<<setw(3)<<s[i]<<" | "; } cout<<endl<<"array: | "; for(int i=0;i<N;i++) cout<<setw(3)<<s[i]<<" | "; cout<<endl<<"index: | "; for(int i=0;i<N;i++) cout<<setw(3)<<i<<" | "; cout<<endl<<endl; } int main ( ) { // инициализираме опашката init(); print(); // добавяме елементи cout<<endl; push(4); cout<<"push " << 4 << endl; push(-20); cout<<"push " << -20 << endl; push(6); cout<<"push " << 6 << endl; push(14); cout<<"push " << 14 << endl; print(); system("pause"); // изтриваме елементи int Y; cout<<endl; pop(Y); cout<<"pop " << Y << endl; pop(Y); cout<<"pop " << Y << endl; print(); system("pause"); // добавяме още елементи cout<<endl; push(-52); cout<<"push " << -52 << endl; push(11); cout<<"push " << 11 << endl; print(); system("pause"); // изтриваме елементи cout<<endl; pop(Y); cout<<"pop " << Y << endl; pop(Y); cout<<"pop " << Y << endl; pop(Y); cout<<"pop " << Y << endl; pop(Y); cout<<"pop " << Y << endl; print(); system("pause"); return 0; }