Пример #1
0
        static bool ValidarSequencia(string sequencia)
        {
            Pilha pilha = new Pilha();

            for (int pos = 0; pos < sequencia.Length; pos++)
            {
                if (pilha.Vazia())
                {
                    pilha.Empilhar(new Caracter(sequencia[pos]));
                }
                else
                {
                    Caracter caracterTopoPilha = (Caracter)pilha.ConsultarTopo();

                    if (ComplementaParenteses(caracterTopoPilha.Letra, sequencia[pos]))
                    {
                        pilha.Desempilhar(); //completar, retira
                    }
                    else
                    {
                        pilha.Empilhar(new Caracter(sequencia[pos])); //senão, insere
                    }
                }
            }

            return(pilha.Vazia()); //Se a pilha estiver vazia, todos os parentesês se complementam
        }
Пример #2
0
 private void DesempilharElementos <T>(Pilha <T> pilha, string nomePilha)
 {
     Console.Clear();
     Console.WriteLine($"Desempilhando elementos da pilha {nomePilha}");
     for (int i = pilha.Tamanho; i >= 0; i--)
     {
         Console.WriteLine($"Elemento {i}: {pilha.Desempilhar()}");
     }
 }
Пример #3
0
        private void PrintBinarios(Pilha <char> binarios)
        {
            var binario = new StringBuilder();

            while (!binarios.EstaVazia())
            {
                binario.Insert(0, binarios.Desempilhar());
            }
            Console.WriteLine(binario.ToString());
        }
Пример #4
0
        private bool VerificarOrdem(Pilha <char> parenteses)
        {
            if (parenteses.Topo() == '(')
            {
                return(false);
            }

            int control = 0;

            while (!parenteses.EstaVazia())
            {
                if (parenteses.Desempilhar() == ')')
                {
                    control++;
                    continue;
                }
                control--;
            }
            return(control == 0 && parenteses.Tamanho % 2 == 0);
        }