Beispiel #1
0
        static void Main()
        {
            Stack S = new Stack();
            Queue Q = new Queue();
            int[] A = new int[10];
            Console.WriteLine(@" Команды очереди:
              ______________________________________________________________
             | Qpush 'data' - добавление элемента в очередь                 |
             | QMpush 'data' - добавление набора элементов в очередь        |
             | Qpop - удаление элеманта из очереди                          |
             | Qempty - проверка на пустоту                                 |
             | Qdelete - вывести и очистить очередь                         |
             | Q1 - проверка конструктора копирования (создание и вывод Q1) |
             |______________________________________________________________|

            Команды стека:
              ______________________________________________________________
             | Spush 'data' - добавление элемента в стек                    |
             | SMpush 'data' - добавление набора элементов в стек           |
             | Spop - удаление элеманта из стека                            |
             | Sempty - проверка на пустоту                                 |
             | Sdelete - вывести и очистить стек                            |
             | S1 - проверка конструктора копирования (создание и вывод S1) |
             |______________________________________________________________|
            exit - выход
            ");
            String s = Console.ReadLine();
            String[] str = s.Split(' ');
            while (!str[0].Equals("exit"))
            {
                switch (str[0])
                {
                    case ("Qpush"): Q.Push(int.Parse(str[1])); break;
                    case ("QMpush"): for (int i = 1; i < str.Length; i++) A[i - 1] = int.Parse(str[i]);
                        pushM(Q, A);
                        break;
                    case ("Qpop"): Console.WriteLine("Элемент {0} удален из очереди", Q.Pop()); break;
                    case ("Qempty"): Console.WriteLine(Q.Empty() ? "Очередь пустая" : "очередь не пустая"); break;
                    case ("Qdelete"): delete(Q); break;
                    case ("Q1"): Queue Q1 = new Queue(Q); delete(Q1); break;
                    case ("Spush"): S.Push(int.Parse(str[1])); break;
                    case ("SMpush"): for (int i = 1; i < str.Length; i++) A[i - 1] = int.Parse(str[i]);
                        pushM(S, A);
                        break;
                    case ("Spop"): Console.WriteLine("Элемент {0} удален из очереди", S.Pop()); break;
                    case ("Sempty"): Console.WriteLine(S.Empty() ? "стек пустой" : "стек не пустой"); break;
                    case ("Sdelete"): delete(S); break;
                    case ("S1"): Stack S1 = new Stack(S); delete(S1); break;
                    default: Console.WriteLine("Неверная команда!"); break;
                }
                s = Console.ReadLine();
                str = s.Split(' ');
            }
        }
Beispiel #2
0
        public Stack(Stack t)
        {
            if (t.Empty()) { head = null; }
            else
            {
                head = new Node(null, t.head.data);
                Node t1, t2, t3;

                t1 = t.head.next;
                t2 = head;
                while (t1 != null)
                {
                    t3 = new Node(null, t1.data);
                    t2.next = t3;
                    t2 = t2.next;
                    t1 = t1.next;
                }
                t2.next = null;
            }
        }