Advertisement
spacerose

Untitled

Sep 22nd, 2020
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.48 KB | None | 0 0
  1.  
  2. #include <iostream>
  3. using namespace std;
  4. const int N = 4; //размер очереди
  5. struct Queue
  6. {
  7. int data[N]; //массив данных
  8. int last; //указатель на начало
  9. };
  10. void Creation(Queue* Q) //создание очереди
  11. {
  12. Q->last = 0;
  13. }
  14. bool Full(Queue* Q) //проверка очереди на пустоту
  15. {
  16. if (Q->last == 0) return true;
  17. else return false;
  18. }
  19. void Add(Queue* Q) //добавление элемента
  20. {
  21. if (Q->last == N)
  22. {
  23. cout << "\nОчередь заполнена\n\n"; return;
  24. }
  25. int value;
  26. cout << "\nЗначение > "; cin >> value;
  27. Q->data[Q->last++] = value;
  28. cout << endl << "Элемент добавлен в очередь\n\n";
  29. }
  30. void Delete(Queue* Q) //удаление элемента
  31. {
  32. for (int i = 0; i < Q->last && i < N; i++) //смещение элементов
  33. Q->data[i] = Q->data[i + 1]; Q->last--;
  34. }
  35. int Top(Queue* Q) //вывод начального элемента
  36. {
  37. return Q->data[0];
  38. }
  39. int Size(Queue* Q) //размер очереди
  40. {
  41. return Q->last;
  42. }
  43. void main() //главная функция
  44. {
  45. setlocale(LC_ALL, "Rus");
  46. Queue Q;
  47. Creation(&Q);
  48. char number;
  49. do
  50. {
  51. cout << "1. Добавить элемент" << endl;
  52. cout << "2. Удалить элемент" << endl;
  53. cout << "3. Вывести верхний элемент" << endl;
  54. cout << "4. Узнать размер очереди" << endl;
  55. cout << "0. Выйти\n\n";
  56. cout << "Номер команды > "; cin >> number;
  57. switch (number)
  58. {
  59. case '1': Add(&Q);
  60. break;
  61. //-----------------------------------------------
  62. case '2':
  63. if (Full(&Q)) cout << endl << "Очередь пуста\n\n";
  64. else
  65. {
  66. Delete(&Q);
  67. cout << endl << "Элемент удален из очереди\n\n";
  68. } break;
  69. //-----------------------------------------------
  70. case '3':
  71. if (Full(&Q)) cout << endl << "Очередь пуста\n\n";
  72. else cout << "\nНачальный элемент: " << Top(&Q) << "\n\n";
  73. break;
  74. //-----------------------------------------------
  75. case '4':
  76. if (Full(&Q)) cout << endl << "Очередь пуста\n\n";
  77. else cout << "\nРазмер очереди: " << Size(&Q) << "\n\n";
  78. break;
  79. //-----------------------------------------------
  80. case '0': break;
  81. default: cout << endl << "Команда не определена\n\n";
  82. break;
  83. }
  84. } while (number != '0');
  85. system("pause");
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement