Нужна помощь с функциями для очереди, сделанного с помощью массива
Написал очередь через массив. Но push и pop не работают корректно, если добавлять и удалять большое кол-во элементов. Не могли бы вы подсказать ультимативный вариант для push, pop и print?
#include
using namespace std;
class q2 {
private:
int* mas;
int start;
int finish;
int r;
public:
q2(const int z) {
r = z;
mas = new int[z];
start = 0;
finish = 0;
}
~q2() {
start = 0;
finish = 0;
r = 0;
delete[]mas;
}
void push(int x) {
//mas[finish] = x;
//finish++;
}
void pop() {
//start++;
}
bool empty() {
return! size();
}
int size() {
return finish - start;
}
int& front() {
return mas[start];
}
int& back() {
return mas[finish - 1];
}
void print()
{
//for (int i = start; i < finish; i++)
//cout << mas[i] << " ";
}
};
void e_m(bool check) {
if (!check)
cout << "error occured\n";
}
int main()
{
q2 Q(4);
Q.push(8);
Q.push(7);
Q.push(6);
Q.push(2);
Q.print(); cout << "priiiiiint";
cout << endl;
cout << "empty ? " << Q.empty() << endl;
cout << Q.size() << endl;
e_m(Q.size() == 4);
e_m(Q.back() == 2);
e_m(Q.front() == 8);
Q.pop();
e_m(Q.front() == 7); Q.pop();
e_m(Q.front() == 6); Q.pop();
e_m(Q.front() == 2);
Q.pop();
e_m(Q.empty());
}