public static bool CheckBracket(string str, char[] b_in, char[] b_out) { MKStack <char> _stack = new MKStack <char>(); for (int i = 0; i < str.Length; i++) { // открывающую скобку просто добавим в стек if (BracketIn(str[i], b_in)) { _stack.Push(str[i]); } else { int index = BracketOut(str[i], b_out); if (index == -1) { continue; } // для закрывающей скобки проверим последнюю // если совпадают - удалим из стека if (_stack.Count == 0) { return(false); } if (_stack.Head() == b_in[index]) { _stack.Pop(); } else { return(false); } } } foreach (var item in _stack) { Console.Write(item); } if (_stack.Count == 0) { return(true); } else { return(false); } }
/* Создать функцию, копирующую односвязный список (то есть создает в * памяти копию односвязного списка, не удаляя первый список).*/ private static void Task4() { // клонирование односвязного списка на примере стека MKStack <int> original = new MKStack <int>(); original.Push(0); original.Push(1); original.Push(2); original.Push(3); Console.WriteLine("Оригинал: "); foreach (int item in original) { Console.Write($"{item} "); } MKStack <int> stackNew = original.Clone(); Console.WriteLine("\nКопия: "); foreach (int item in stackNew) { Console.Write($"{item} "); } Console.WriteLine("\nНекоторые манипуляции... "); original.Pop(); original.Push(4); stackNew.Push(5); Console.WriteLine("Оригинал: "); foreach (int item in original) { Console.Write($"{item} "); } Console.WriteLine("\nКопия: "); foreach (int item in stackNew) { Console.Write($"{item} "); } }