Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- struct sllist
- {
- float info;
- sllist* next;
- };
- struct Queue
- {
- sllist* qHead = NULL, * qLast = NULL;
- string command;
- float number;
- int size = 0;
- void menu() {
- cout << "Введите команды управления очередью:\nPUSH - добавление элементa\nPOP - удаление элемента из очереди и его вывод\nPRINT - вывод первого в очереди\nEMPTY - проверка пустоты очереди\nFULL - проверка полноты очереди\nEND - вывод элементов очереди и завершение работы\n\n";
- while (true)
- {
- cout << endl;
- cin >> command;
- if (command == "END")
- break;
- else if (command == "PUSH")
- {
- if (size < 7) {
- size++;
- cin >> number;
- Push(qHead, qLast, number);
- }
- else
- cout << "Очередь переполнена! Добавление невозможно\n";
- }
- else if (command == "POP")
- {
- if (size > 0) {
- size--;
- cout << Pop(qHead, qLast) << endl;
- }
- else
- cout << "Очередь пуста! Удаление невозможно\n";
- }
- else if (command == "PRINT")
- {
- if (size>0)
- cout << Print(qHead) << endl;
- else
- cout << "Очередь пуста! Вывод невозможен\n";
- }
- else if (command == "FULL")
- Full(size);
- else if (command == "EMPTY")
- Empty(size);
- else
- cout << "Такой команды нет!\n";
- };
- cout << "В очереди осталось: ";
- while (qHead != NULL)
- cout << Pop(qHead, qLast) << ' ';
- cout << endl;
- }
- float Print(sllist*& head) {
- sllist* tmp = head;
- return head->info;
- }
- void Push(sllist*& head, sllist*& last, float info)
- {
- sllist* newElem = new sllist;
- newElem->info = info;
- newElem->next = NULL;
- if (head != NULL)
- last = last->next = newElem;
- else
- head = last = newElem;
- }
- void Empty(int sz)
- {
- if (sz == 0) cout << "Очередь пуста\n";
- else
- cout << "Очередь не пуста\n";
- }
- void Full(int sz)
- {
- if (sz == 7) cout << "Очередь полна\n";
- else
- cout << "Очередь не полна\n";
- }
- float Pop(sllist*& head, sllist*& last)
- {
- sllist* tmp = head;
- head = head->next;
- float result = tmp->info;
- delete tmp;
- if (head == NULL)
- last = NULL;
- return result;
- }
- };
- int main()
- {
- setlocale(LC_ALL, "rus");
- Queue* Q = new Queue;
- Q->menu();
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment