Реализация на опашка

Ето примерната реализация на опашка, която разглеждахме в часа:

#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;
}

Публикувано в 12в с етикети . Постоянна връзка.

Вашият коментар