Beispiel #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
        }