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(' '); } }
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; } }