spacerose

очередь на олс

Oct 5th, 2020 (edited)
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.31 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. struct sllist
  6. {
  7.     float info;
  8.     sllist* next;
  9. };
  10.  
  11. struct Queue
  12. {
  13.     sllist* qHead = NULL, * qLast = NULL;
  14.  
  15.     string command;
  16.     float number;
  17.     int size = 0;
  18.     void menu() {
  19.         cout << "Введите команды управления очередью:\nPUSH - добавление элементa\nPOP - удаление элемента из очереди и его вывод\nPRINT - вывод первого в очереди\nEMPTY - проверка пустоты очереди\nFULL - проверка полноты очереди\nEND - вывод элементов очереди и завершение работы\n\n";
  20.        
  21.         while (true)
  22.         {
  23.             cout << endl;
  24.             cin >> command;
  25.             if (command == "END")
  26.                 break;
  27.             else if (command == "PUSH")
  28.             {
  29.                 if (size < 7) {
  30.                     size++;
  31.                     cin >> number;
  32.                     Push(qHead, qLast, number);
  33.                 }
  34.                 else
  35.                     cout << "Очередь переполнена! Добавление невозможно\n";
  36.             }
  37.             else if (command == "POP")
  38.             {
  39.                 if (size > 0) {
  40.                     size--;
  41.                     cout << Pop(qHead, qLast) << endl;
  42.                 }
  43.                 else
  44.                     cout << "Очередь пуста! Удаление невозможно\n";
  45.             }
  46.             else if (command == "PRINT")
  47.             {
  48.                 if (size>0)
  49.                     cout << Print(qHead) << endl;
  50.                 else
  51.                     cout << "Очередь пуста! Вывод невозможен\n";
  52.             }
  53.             else if (command == "FULL")
  54.                 Full(size);
  55.             else if (command == "EMPTY")
  56.                 Empty(size);
  57.  
  58.             else
  59.                 cout << "Такой команды нет!\n";
  60.         };
  61.  
  62.         cout << "В очереди осталось: ";
  63.         while (qHead != NULL)
  64.             cout << Pop(qHead, qLast) << '  ';
  65.         cout << endl;
  66.     }
  67.  
  68.  
  69.     float Print(sllist*& head) {
  70.         sllist* tmp = head;
  71.         return head->info;
  72.     }
  73.  
  74.     void Push(sllist*& head, sllist*& last, float info)
  75.     {
  76.         sllist* newElem = new sllist;
  77.         newElem->info = info;
  78.         newElem->next = NULL;
  79.         if (head != NULL)
  80.             last = last->next = newElem;
  81.         else
  82.             head = last = newElem;
  83.     }
  84.  
  85.     void Empty(int sz)
  86.     {
  87.         if (sz == 0) cout << "Очередь пуста\n";
  88.         else
  89.             cout << "Очередь не пуста\n";
  90.     }
  91.  
  92.     void Full(int sz)
  93.     {
  94.         if (sz == 7) cout << "Очередь полна\n";
  95.         else
  96.             cout << "Очередь не полна\n";
  97.     }
  98.     float Pop(sllist*& head, sllist*& last)
  99.     {
  100.         sllist* tmp = head;
  101.         head = head->next;
  102.         float result = tmp->info;
  103.         delete tmp;
  104.         if (head == NULL)
  105.             last = NULL;
  106.         return result;
  107.     }
  108.  
  109. };
  110. int main()
  111. {
  112.     setlocale(LC_ALL, "rus");
  113.     Queue* Q = new Queue;
  114.     Q->menu();
  115.     system("pause");
  116.     return 0;
  117. }
  118.  
Advertisement
Add Comment
Please, Sign In to add comment