# QueueApp Решение состоит из 2-х проектов: * QueueApp.GUI * QueueApp.Model Целевая платформа: .Net Framework 4.7.2 ## QueueApp.Model Данный проект - это библиотека классов. Здесь содержатся классы: * Node * Operations * Queue * EmptyQueueException Классы Node, Queue и методы класса Operations - шаблонные, поэтому при использовании стека мы можем выбирать, какой тип данных он будет хранить. ### Node Данный класс представляет из себя ячейку стека. Имеет 2 поля * Value - значение, хранимое в ячейке * Next - следующая ячейка ### Queue Данный класс хранит всю информацию об очереди, а так же его верхний элемент. Имеет 3 поля: * Head - первый элемент * Tail - последний элемент * Count - количество элементов Также имеет переопределение метода ToString. ### Operations Статичный класс, методы которого реализуют все операции над очередью. Каждый метод является шаблонным, а также методом расширения. Т.е. вызов этих методов можно производить двумя способами: * queue.Insert(value); * Operations.Insert(queue, value); ### EmptyQueueException Пользовательский класс исключения, который должен выбрасываться, когда производится попытка совершить операцию удаления, получения первого или последнего элемента из пустой очереди. ## QueueApp.GUI GUI для взаимодействия с очередью. Сам объект очереди хранится в классе Program, как публичное статическое поле. MainForm - это класс главного окна программы. Все операции, кроме добавления нового элемента, происходит в нём. AddForm - это класс окна добавления нового элемента. Когда оно открывается, главное окно становится недоступным, пока окно AddForm не закроется. Вывод всех результатов производится через MessageBox.