예제 #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 materialFlatButton2_Click(object sender, EventArgs e)
        {
            if (gridDataEstruturas.SelectedRows.Count == 0 && tpEstrutura != "FILA" && tpEstrutura != "PILHA")
            {
                MessageBox.Show("\tOperação bloqueada!\nSelecione a row que deseja deletar");
            }
            else
            {
                String index    = gridDataEstruturas.CurrentRow.Cells[0].Value.ToString();
                String elemento = gridDataEstruturas.CurrentRow.Cells[1].Value.ToString();

                switch (tpEstrutura)
                {
                case "FILA":
                    if (fila.Vazia())
                    {
                        MessageBox.Show("\tOperação bloqueada!\nA estrutura selecionada não possui elementos.");
                    }
                    else
                    {
                        fila.desenfileira();
                        labelQuantidade.Text = fila.Quantidade().ToString();
                        listarDados(fila.imprimir());
                    }
                    break;

                case "PILHA":
                    if (pilha.Vazia())
                    {
                        MessageBox.Show("\tOperação bloqueada!\nA estrutura selecionada não possui elementos.");
                    }
                    else
                    {
                        pilha.desempilhar();
                        labelQuantidade.Text = pilha.Quantidade().ToString();
                        listarDados(pilha.imprimir());
                    }
                    break;

                case "LISTA":
                    if (lista.Vazia())
                    {
                        MessageBox.Show("\tOperação bloqueada!\nA estrutura selecionada não possui elementos.");
                    }
                    else
                    {
                        lista.Remove(elemento);
                        labelQuantidade.Text = lista.Quantidade().ToString();
                        listarDados(lista.imprimir());
                    }
                    break;

                case "ARVORE":
                    if (arvore.Vazia())
                    {
                        MessageBox.Show("\tOperação bloqueada!\nA estrutura selecionada não possui elementos.");
                    }
                    else
                    {
                        arvore.Remove(int.Parse(elemento));
                        labelQuantidade.Text = arvore.Qtde().ToString();
                        listarDados(arvore.imprimir());
                    }
                    break;

                case "HASH":
                    String textoTela = TextSequencia.Text;
                    if (textoTela == "")
                    {
                        MessageBox.Show("\t\t\tOperação bloqueada!\nPara deletar um elemento da tabela hash" +
                                        " digite o valor item a ser deletafo no campo de sequência, " +
                                        "selecione a row da chave em que ele se encontra e tecle no botão deletar.");
                    }
                    else
                    {
                        char[] delimitador = { ';' };
                        elemento = textoTela.Split(delimitador)[0];

                        if (hash.Vazia(int.Parse(index) - 1))
                        {
                            MessageBox.Show("\tOperação bloqueada!\nA estrutura selecionada não possui elementos.");
                        }
                        else
                        {
                            hash.remove(int.Parse(index) - 1, elemento);
                            labelQuantidade.Text = hash.Quantidade().ToString();
                            listarDados(hash.imprimir());
                        }
                    }
                    break;
                }
            }
        }