Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
#include
#include
#include
const int QE = 2; enum ACTION { CLEAR, // Очистить очередь IS_EMPTY, // Проверить, пуста ли очередь PUSH, // Добавить элемент в очередь POP, // Взять элемент из очереди PRINT, // Вывести содержимое очереди EXIT // Завершить работу программы }; struct item { item(int _elem = 0, item *_next = NULL) : elem(_elem), next(_next) { } int elem; item *next; }; struct queue { private: item *begin = NULL, *end = NULL; public: ///
/// Добавляет элемент в конец очереди. ///
///
Элемент, который нужно добавить в очередь. void push(char e) { end = (is_empty() ? begin : end->next) = new item(e); } ///
/// Выталкивает начальный элемент из очереди и передает его в e. ///
///
Переменная, в которую нужно передать начальный элемент очереди. ///
Код выполнения операции. Если 2, то операция не выполнена, из-за исчерапания очереди.
int pop(int &e) { bool is_e = is_empty(); if (!is_e) { item *d = begin; e = d->elem; begin = begin == end ? end = NULL : begin->next; delete d; } return is_e ? QE : 0; } ///
/// Проверяет, пуста ли очередь. ///
///
true - пуста, false - не пуста.
bool is_empty() { return !end; } ///
/// Очищает очередь от элементов. ///
void clear() { for (int e = 0; !is_empty(); pop(e)); } ///
/// Выводит содержимое очереди. ///
void print() { queue q; int e = 0; for ( ; !is_empty(); pop(e), q.push(e), printf_s("%d\n", e)); for ( ; !q.is_empty(); q.pop(e), push(e)); } }; int main() { setlocale(0, ""); queue Q; bool is_repeat = true; int a = 0, r = 0, elem = 0; do { printf_s("Выберите действие:\nОчистить очередь [%d]\tПроверить, пуста ли очередь [%d]\tДобавить элемент в очередь [%d]\tВзять элемент из очереди[%d]\tРаспечатать содержимое очереди [%d]\tЗавершить работу [%d]\nДействие: ", CLEAR, IS_EMPTY, PUSH, POP, PRINT, EXIT); scanf_s("%d", &a); printf_s("\n"); switch (a) { case CLEAR: Q.clear(); printf_s("Очередь очищена."); break; case IS_EMPTY: printf_s(Q.is_empty() ? "Очередь пуста." : "Очередь не пуста."); break; case PUSH: printf_s("Введите элемент: "); scanf_s("%d", &elem); Q.push(elem); printf_s("Элемент успешно добавлен."); break; case POP: r = Q.pop(elem); r == QE ? printf_s("Не удалось взять элемент: очередь пуста.") : printf_s("Взятый элемент: %d.", elem); break; case PRINT: printf_s("Содержимое очереди:\n"); Q.print(); break; case EXIT: is_repeat = false; break; default: break; } printf_s("\n\n"); } while (is_repeat); return 0 * _getch(); }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)