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 }
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; } } }