#include #include #include #include const UCHAR N = 3, Q_EMPTY = 2, Q_FULL = 1; struct queue { UCHAR begin = 0, end = 0; LONGLONG data[N] = { 0 }; }; UCHAR push(queue &q, LONGLONG elem); UCHAR pop(queue &q, LONGLONG &elem); bool is_empty(queue q); bool is_full(queue q); void clear(queue &q); void print(queue q); int main() { queue Q; return 0 * _getch(); } UCHAR push(queue &q, LONGLONG elem) { bool is_f = is_pfull(q); if (!is_f) { q.end++; q.data[q.end] = elem; } return is_f ? Q_FULL : 0; } UCHAR pop(queue &q, LONGLONG &elem) { bool is_e = is_empty(q); if (!is_e) { elem = q.data[q.begin]; q.data[q.begin] = 0; q.begin++; } return is_e ? Q_EMPTY : 0; } bool is_empty(queue q) { return q.end == q.begin; } bool is_full(queue q) { return q.end == N -1 && q.begin == 0; } bool is_pfull(queue q) { return q.end == N - 1 && q.begin; } void clear(queue &q) { for (LONGLONG n = 0; !is_empty(q); pop(q, n)); } void print(queue q) { LONGLONG n = 0; while (!is_empty(q)) { pop(q, n); printf_s("%lld", n); } }