Advertisement
r1411

Кольцевая очередь

Jun 12th, 2021 (edited)
406
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.21 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. #define max 5
  5.  
  6. struct kq {
  7.     int n, k, count;
  8.     int q[max];
  9. };
  10.  
  11. int sled(int i) {
  12.     if (i < max - 1)
  13.         return i + 1;
  14.     else
  15.         return 0;
  16. }
  17.  
  18. bool isEmpty(kq* q) {
  19.     return q->count == 0;
  20. }
  21.  
  22. void init(kq * q) {
  23.     q->n = 0;
  24.     q->k = 0;
  25.     q->count = 0;
  26. }
  27.  
  28. void inQ(kq* q, int x) {
  29.     if (q->count == max) {
  30.         cout << "АЛЯРМ МЕСТА НЕТ ТРiВОГА ЯРiК!!!" << endl;
  31.     } else {
  32.         q->q[q->k] = x;
  33.         q->k = sled(q->k);
  34.         q->count++;
  35.     }
  36. }
  37.  
  38. int outQ(kq* q) {
  39.     if (isEmpty(q)) {
  40.         cout << "пусто..." << endl; return 0;
  41.     } else {
  42.         int elem = q->q[q->n];
  43.         q->n = sled(q->n);
  44.         q->count--;
  45.         return elem;
  46.     }
  47. }
  48.  
  49. void main() {
  50.     kq *q = new(kq);
  51.     init(q);
  52.  
  53.     inQ(q, 2);
  54.     inQ(q, 5);
  55.     inQ(q, 7);
  56.  
  57.     cout << outQ(q) << endl;
  58.     cout << outQ(q) << endl;
  59.     cout << outQ(q) << endl;
  60.  
  61.     inQ(q, 3);
  62.     inQ(q, 6);
  63.     inQ(q, 8);
  64.     inQ(q, 9);
  65.  
  66.     cout << outQ(q) << endl;
  67.     cout << outQ(q) << endl;
  68.     cout << outQ(q) << endl;
  69.     cout << outQ(q) << endl;
  70.  
  71.     inQ(q, 11);
  72.     inQ(q, 12);
  73.     inQ(q, 13);
  74.     inQ(q, 14);
  75.     inQ(q, 15);
  76.  
  77.     cout << outQ(q) << endl;
  78.     cout << outQ(q) << endl;
  79.     cout << outQ(q) << endl;
  80.     cout << outQ(q) << endl;
  81.     cout << outQ(q) << endl;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement