Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            /* Сделать класс PriorityQueue, который может работать с любыми типами данных.
             * Методы класса:
             * Put(/данные/, /приоритет (только 3 варианта: высокий, средний или низкий)/)
             * Get() /извлекает первый наиболее приоритетный элемент из очереди/
             * Drop(/приоритет/) /удаляет из очереди, не используя, все элементы с указанным приоритетом/
             * При выполнении этого задания можно пользоваться коллекциями.*/

            List<string> menusList = new List<string>();

            menusList.Add("--Add 'char' element");
            menusList.Add("--Get 'char' element");
            menusList.Add("-Drop 'char' element");
            menusList.Add("----------------Exit");

            // Создание простой очереди с динамически увеличивающимся размером
            // и параметрическим типом элементов значимого типа
            PriorityQueue<char> TestQueue = new PriorityQueue<char>();

            TestQueue.Put('a', 1);
            TestQueue.Put('z', -1);
            TestQueue.Put('c', 1);
            TestQueue.Put('x', -1);
            TestQueue.Put('f', 0);
            TestQueue.Put('w', -1);
            TestQueue.Put('d', 0);
            TestQueue.Put('b', 1);
            TestQueue.Put('g', 0);

            bool key = true;
            do
            {
                switch (MenusFunc(menusList) + 1)
                {
                    case 1:
                        // Занесение елемента в очередь
                        TestQueue.Put(char.Parse(Console.ReadLine()), int.Parse(Console.ReadLine()));
                        break;
                    case 2:
                        // Извлечение елемента из очереди
                        Console.WriteLine(TestQueue.Get() + "\n");
                        TestQueue.Print();
                        break;
                    case 3:
                        // Извлечение елемента из очереди
                        TestQueue.Drop(int.Parse(Console.ReadLine()));
                        TestQueue.Print();
                        break;
                    default:
                        key = !key;
                        break;
                }
            } while (key);
        }