Exemplo n.º 1
0
        static void Main(string[] args)
        {
            stack = new NodeStack <string>();

            stack.CollectionChanged += Stack_CollectionChanged;

            int    key = 1, answer;
            string value = "", peek, del;

            while (key != 0)
            {
                Console.Clear();
                Console.Write(
                    "           Menu:\n" +
                    "1: Add value to stack.\n" +
                    "2: Show all values from stack.\n" +
                    "3: Show top value of stack.\n" +
                    "4: Delete value from stack.\n" +
                    "0: Exit.\n" +
                    "Enter key: ");

                key = Convert.ToInt32(Console.ReadLine());

                switch (key)
                {
                //добавляем элементы в стек
                case 1:
                    Console.Write("\nHow many values do you want to insert?: ");
                    answer = Convert.ToInt32(Console.ReadLine());
                    for (int i = 0; i < answer; i++)
                    {
                        Console.Write("Add value: ");
                        value = Console.ReadLine();
                        stack.Push(value);

                        if (message != null)
                        {
                            Console.WriteLine($"\n{message}\n");
                        }
                    }
                    break;

                //выводим вместимое стека
                case 2:
                    try
                    {
                        stack.ReturnEmpty();
                        Console.WriteLine("\nStack values:\n");
                        foreach (var elem in stack)
                        {
                            Console.WriteLine(elem);
                        }
                        Console.WriteLine();
                    }
                    catch (InvalidOperationException err)
                    {
                        Console.WriteLine(err.Message);
                    }
                    break;

                case 3:
                    try
                    {
                        stack.ReturnEmpty();
                        peek = stack.Peek();
                        Console.WriteLine($"\nTop value in stack: {peek}\n");
                    }
                    catch (InvalidOperationException err)
                    {
                        Console.WriteLine(err.Message);
                    }
                    break;

                case 4:
                    try
                    {
                        stack.ReturnEmpty();
                        del = stack.Pop();
                        Console.WriteLine($"\nDeleted value is: {del}");

                        if (message != null)
                        {
                            Console.WriteLine($"\n{message}\n");
                        }
                    }
                    catch (InvalidOperationException err)
                    {
                        Console.WriteLine(err.Message);
                    }
                    break;

                case 0:
                    return;

                default:
                    Console.WriteLine("\nWrong input! Try again.\n");
                    break;
                }
                Console.Write("Press any key to continue...");
                Console.ReadKey();
            }
        }