예제 #1
0
        static void Main(string[] args)
        {
            Stack <string> stack = new Stack <string>();
            Stack <string> stack_copy = new Stack <string>();;
            int            i, d = 0;
            bool           flag = true;
            var            head = "";

            while (flag)
            {
                Console.WriteLine("============Содержание============");
                if (stack.IsEmpty)
                {
                    Console.WriteLine("Пусто");
                }
                else
                {
                    if (d == 0)
                    {
                        stack.List();
                    }
                    else if (d == 1)
                    {
                        stack_copy.List();
                    }
                }
                Console.WriteLine("==================================");
                if (d == 0)
                {
                    Console.WriteLine("Activ stec: Оригинал");
                }
                else if (d == 1)
                {
                    Console.WriteLine("Activ stec: Копия");
                }
                Console.WriteLine("Выберите действие:");
                Console.WriteLine("1.Вставка на вершину стека.");
                Console.WriteLine("2.Вставка в конец очереди.");
                Console.WriteLine("3.Извлечение с вершины стека.");
                Console.WriteLine("4.Извлечение из начала очереди.");
                Console.WriteLine("5.Освобождение памяти от структуры данных.");
                Console.WriteLine("6.Клонировать оригинал.");
                Console.WriteLine("7.Выбор стека.");
                Console.WriteLine("8.Тест.");
                Console.WriteLine("9.Выход.");
                Console.Write("Введите номер действия: ");
                i = int.Parse(Console.ReadLine());

                switch (i)
                {
                case 1:
                    Console.Clear();
                    Console.Write("Введите значение: ");
                    if (d == 0)
                    {
                        stack.Push(Console.ReadLine());
                    }
                    else if (d == 1)
                    {
                        stack_copy.Push(Console.ReadLine());
                    }
                    Console.WriteLine("Значение добавлено!");
                    Thread.Sleep(400);
                    Console.Clear();
                    break;

                case 2:
                    Console.Clear();
                    Console.Write("Введите значение: ");
                    if (d == 0)
                    {
                        stack.PushLast(Console.ReadLine());
                    }
                    else if (d == 1)
                    {
                        stack_copy.PushLast(Console.ReadLine());
                    }
                    Console.WriteLine("Значение добавлено!");
                    Thread.Sleep(400);
                    Console.Clear();
                    break;

                case 3:
                    Console.Clear();
                    head = "";
                    if (d == 0)
                    {
                        head = stack.Pop();
                    }
                    else if (d == 1)
                    {
                        head = stack_copy.Pop();
                    }
                    Console.WriteLine("Извелеченное значение с вершины стека: {0}", head);
                    Console.WriteLine("Нажмите ENTER для продолжения");
                    Console.ReadLine();
                    Console.Clear();
                    break;

                case 4:
                    Console.Clear();
                    head = "";
                    if (d == 0)
                    {
                        head = stack.PopLast();
                    }
                    else if (d == 1)
                    {
                        head = stack_copy.PopLast();
                    }
                    Console.WriteLine("Извелеченное значение из начала очереди: {0}", head);
                    Console.WriteLine("Нажмите ENTER для продолжения");
                    Console.ReadLine();
                    Console.Clear();
                    break;

                case 5:
                    Console.Clear();
                    if (d == 0)
                    {
                        stack.Remove();
                    }
                    else if (d == 1)
                    {
                        stack_copy.Remove();
                    }
                    Console.WriteLine("Освобождение памяти от структуры данных!");
                    Thread.Sleep(400);
                    Console.Clear();
                    break;

                case 6:
                    Console.Clear();
                    Console.WriteLine("Клонирование стека!");
                    stack_copy = stack.Clone();
                    Thread.Sleep(400);
                    Console.Clear();
                    break;

                case 7:
                    Console.Clear();
                    Console.Write("Выбор стека (0 - оригинал, 1 - копия): ");
                    d = int.Parse(Console.ReadLine());
                    if (d > 1)
                    {
                        d = 0;
                    }
                    Thread.Sleep(400);
                    Console.Clear();
                    break;

                case 8:
                    Console.Clear();
                    Console.WriteLine("Вставка на вершину стека.");
                    stack.Push("123123");
                    stack.List();
                    Console.WriteLine("Вставка в конец очереди.");
                    stack.PushLast("562343242");
                    stack.List();
                    Console.WriteLine("Извлечение с вершины стека.");
                    head = stack.Pop();
                    Console.WriteLine(head);
                    Console.WriteLine("Извлечение из начала очереди.");
                    head = stack.PopLast();
                    Console.WriteLine(head);
                    Console.WriteLine("Вставка на вершину стека.");
                    stack.Push("123123");
                    stack.List();
                    Console.WriteLine("Вставка в конец очереди.");
                    stack.PushLast("562343242");
                    stack.List();
                    Console.WriteLine("Клоникрование stack в stack_copy");
                    stack_copy = stack.Clone();
                    Console.WriteLine("Содержимое stack_copy");
                    stack_copy.List();
                    Console.WriteLine("Освобождение памяти от структуры данных");
                    stack.Remove();
                    stack_copy.Remove();
                    Console.WriteLine("Нажмите Enter для продолжения");
                    Console.ReadLine();
                    Console.Clear();
                    break;

                case 9:
                    flag = false;
                    break;
                }
            }
        }