Работа со стеками  асд вариант №3 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Работа со стеками  асд вариант №3

using System;

using System.Collections;

 

namespace lab4_AISD

{

class Program

{

   // Наша функция

   static bool WellFormed(string Consistency)

   {

       char c; // Объявляем переменную типа Char (символ)

       Stack s = new Stack(); // Создаем переменную типа Stack (стек)

 

       // Пробегаем циклом по всем символам введенной строки слева направо

       for (int i = 0; i < Consistency.Length; i++)

       {

           // Если встретили открывающую скобку...

           if ((Consistency[i] == '{') || (Consistency[i] == '['))

               s.Push(Consistency[i]); // ...то помещаем ее в стек

 

           // А если встретили закрывающую скобку...

           else if ((Consistency[i] == '}') || (Consistency[i] == ']'))

           {

               // ...и если стек пустой...

               if (s.Count == 0)

               {

                   return false; // ...то последовательность не верна, возвращаем ложь

               }

 

               c = (char)s.Pop(); // ...то достаем данные из стека

 

               // ...и все закрывающие скобки соответствуют скобкам в стеке...

               if (((c == '{') && (Consistency[i] == '}')) || ((c == '[') && (Consistency[i] == ']')))

                   continue; // ...то прерываем текущую итерацию (выполнение) и переходим к следующему шагу цикла

               // ...иначе...

               else

                   return false; // ...то последовательность не верна, возвращаем ложь

           }

           // ...и это другие символы...

           else

               continue; // ...то прерываем текущую итерацию и переходим к следующему шагу цикла

       }

 

       // Если в стеке остались скобки...

       if (s.Count > 0)

           return false; // ...то последовательность не верна, возвращаем ложь

       return true; // ...то последовательность верна, возвращаем истину

   }

 

   static void Main(string[] args)

   {

       string aString;

       aString = Console.ReadLine();

       if (WellFormed(aString))

           Console.WriteLine("Последовательность {0} правильна", aString);

       else

           Console.WriteLine("Последовательность {0} не правильна", aString);

       Console.ReadLine();

   }

}

}

 

 

/* Описание основных функций класса Stack()

 * Push() - помещает элемент в стек

 * Pop() - берет элемент из стека

 * Peek() - возвращает верхний элемент стека

 * Contains() - проверяет содержится ли элемент в стеке

 * Count() - свойство, содержащее количество объектов в очереди

 */

 

 

Автор: Юра Есин (Спецом для СКС-11)

 



Поделиться:


Последнее изменение этой страницы: 2024-06-17; просмотров: 55; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.009 с.)