Пример #1
0
        public static void PopDe(MyStack <double> se, MyStack <char> st) //Функция выталкивания
        {
            double b = se.Pop();
            double a = se.Pop();

            switch (st.Pop())
            {
            case '+':
                se.Push(a + b);
                break;

            case '-':
                se.Push(a - b);
                break;

            case '*':
                se.Push(a * b);
                break;

            case '/':
                if (Math.Abs(b) < 1)
                {
                    throw new Exception("Деление на 0");
                }
                else
                {
                    se.Push(a / b);
                    break;
                }
            }
        }
Пример #2
0
        static void Main(string[] args)
        {
            MyStack <int> st = new MyStack <int>(5);
            //st.Push(15);
            //st.Push(36);
            //st.Push(55);
            //Console.WriteLine(st.Top());
            //Console.WriteLine(st.Pop());
            //Console.WriteLine(st.Top());
            //Console.WriteLine(st.Pop());

            MyStack <char> st1   = new MyStack <char>(15);
            String         s     = Console.ReadLine();
            bool           error = false;

            for (int i = 0; i < s.Length; i++)
            {
                if (s[i] == '(' || s[i] == '{' || s[i] == '[')
                {
                    st1.Push(s[i]);
                }
                if (s[i] == ')' || s[i] == '}' || s[i] == ']')
                {
                    if (st1.IsEmpty())
                    {
                        Console.WriteLine("Лишняя закрывающая!");
                        error = true;
                        break;
                    }

                    char tmp = st1.Pop();
                    if (tmp == '{' && s[i] != '}')
                    {
                        Console.WriteLine("Типы скобок не совпадают!");
                        error = true;
                        break;
                    }
                    if (tmp == '[' && s[i] != ']')
                    {
                        Console.WriteLine("Типы скобок не совпадают!");
                        error = true;
                        break;
                    }
                    if (tmp == '(' && s[i] != ')')
                    {
                        Console.WriteLine("Типы скобок не совпадают!");
                        error = true;
                        break;
                    }
                }
            }
            if (st1.IsEmpty() && !error)
            {
                Console.WriteLine("Все верно");
            }
            else
            {
                Console.WriteLine("Не верно");
            }
        }
Пример #3
0
        static void Main(string[] args)
        {
            Console.WriteLine("Создаем стэк.");
            MyStack mst = new MyStack();

            mst.Push(1);
            mst.Push(2);
            mst.Push(3);
            mst.Push(4);
            mst.Push(5);
            Console.WriteLine("Заполнили стэк элементами:");
            foreach (var el in mst)
            {
                Console.Write(el + " ");
            }
            Console.WriteLine();
            Console.WriteLine("Возвращаем и удаляем: " + mst.Pop());
            Console.WriteLine("Возвращаем и удаляем: " + mst.Pop());
            Console.WriteLine("Возвращаем но не удаляем: " + mst.Peek());

            Console.WriteLine("В стэке осталось:");
            foreach (var el in mst)
            {
                Console.Write(el + " ");

            }

            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine();

            Console.WriteLine("Создаем очередь.");
            MyQueue mqu = new MyQueue();

            mqu.Enqueue(1);
            mqu.Enqueue(2);
            mqu.Enqueue(3);
            mqu.Enqueue(4);
            mqu.Enqueue(5);
            Console.WriteLine("Заполнили очередь элементами:");
            foreach (var el in mqu)
            {
                Console.Write(el + " ");
            }
            Console.WriteLine();
            Console.WriteLine("Возвращаем и удаляем: " + mqu.Dequeue());
            Console.WriteLine("Возвращаем и удаляем: " + mqu.Dequeue());
            Console.WriteLine("Возвращаем но не удаляем: " + mqu.Peek());

            Console.WriteLine("В очереди осталось:");
            foreach (var el in mqu)
            {
                Console.Write(el + " ");

            }
            Console.WriteLine();
        }