Advertisement
r1411

Очередь

Jun 12th, 2021 (edited)
299
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. #define max 100
  5.  
  6. struct queue {
  7.     int n, k;
  8.     int q[max];
  9. };
  10.  
  11. //  <--  [0 1 2 3 4]  <--
  12. //          n   k
  13.  
  14. void init(queue* q) {
  15.     q->n = 0;
  16.     q->k = 0;
  17. }
  18.  
  19. bool isEmpty(queue* q) {
  20.     return q->n == q->k;
  21. }
  22.  
  23. void inQ(queue* q, int x) {
  24.     if (q->k - q->n == max - 1) {
  25.         cout << "АЛЯРМ МЕСТА НЕТ ТРiВОГА ЯРiК!!!";
  26.     } else {
  27.         //Если очередь не полная, но уперлись в потолок массива, а в начале массива есть еще место, то сдвигаем всю очередь
  28.         if (q->k == max - 1) {
  29.             for (int j = q->n; j <= q->k; j++)
  30.                 q->q[j - q->n] = q->q[j];
  31.             q->k = q->k - q->n;
  32.             q->n = 0;
  33.         }
  34.         q->q[q->k++] = x;
  35.     }
  36. }
  37.  
  38. int outQ(queue* q) {
  39.     if (isEmpty(q)) {
  40.         cout << "чел ты чел очередь пустая чел ты кого извлекаешь";
  41.     } else {
  42.         return q->q[q->n++];
  43.     }
  44. }
  45.  
  46.  
  47. void main() {
  48.     queue* q = new(queue);
  49.     init(q);
  50.  
  51.     inQ(q, 3);
  52.     inQ(q, 7);
  53.     inQ(q, 19);
  54.  
  55.     cout << outQ(q) << endl;
  56.     cout << outQ(q) << endl;
  57.     cout << outQ(q) << endl;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement