public Dados Retirar() { if (this.prim.prox != null) { Elemento aux = this.prim.prox; if (aux == this.ult) { this.ult = this.prim; } this.prim.prox = aux.prox; aux.prox = null; return(aux.d); } else { return(null); } }
public Dados Desempilhar() { if (topo.prox != null) { Elemento aux = topo.prox; if (aux == this.final) { this.final = this.topo; } this.topo.prox = aux.prox; aux.prox = null; return(aux.d); } else { return(null); } }
public Fila() { this.prim = new Elemento(null); this.ult = this.prim; }
private void btnAbre_Click(object sender, EventArgs e) { if ((sender as Button).Text == "CE" && qtd != 0) // CASO O USUÁRIO DECIDA APAGAR O ÚLTIMO DADO DIGITADO { if (txtResultado.Text.Substring(txtResultado.TextLength - 1, 1) == "(") // caso seja abre parentenses diminui um na variavel que controla o número de abre { qtdParenteses1--; } if (txtResultado.Text.Substring(txtResultado.TextLength - 1, 1) == ")") // caso seja fecha parenteses diminui um na variavel que controla o número de fecha { qtdParenteses2--; } txtResultado.Text = txtResultado.Text.Remove(txtResultado.TextLength - 1); ex[qtd] = null; qtd--; btn0.Enabled = true; btn1.Enabled = true; btn2.Enabled = true; btn3.Enabled = true; btn4.Enabled = true; btn5.Enabled = true; btn6.Enabled = true; btn7.Enabled = true; btn8.Enabled = true; btn9.Enabled = true; btnAbre.Enabled = true; btnFecha.Enabled = false; btnDividir.Enabled = true; btnElevado.Enabled = true; btnMais.Enabled = true; btnMenos.Enabled = true; btnPonto.Enabled = true; } else if ((sender as Button).Text == "C") // APAGAR TODA A EXPRESSÃO E RESETAR AS VARIÁVEIS DA INTÂNCIA EXPRESSÃO { txtResultado.Text = ""; lblPos.Text = "Pósfixa: "; for (int i = 0; i <= qtd; i++) { ex[i] = null; } qtdParenteses1 = 0; qtdParenteses2 = 0; txtResult.Text = ""; qtd = 0; btn0.Enabled = true; btn1.Enabled = true; btn2.Enabled = true; btn3.Enabled = true; btn4.Enabled = true; btn5.Enabled = true; btn6.Enabled = true; btn7.Enabled = true; btn8.Enabled = true; btn9.Enabled = true; btnAbre.Enabled = true; btnFecha.Enabled = true; btnDividir.Enabled = true; btnElevado.Enabled = true; btnMais.Enabled = true; btnMenos.Enabled = true; btnPonto.Enabled = true; } else if ((sender as Button).Text != "CE") { txtResultado.Text += (sender as Button).Text; Elemento ele = new Elemento((sender as Button).Text, ex.DecidirPreferencia((sender as Button).Text)); // Um novo elemento para adicionar a expressão if (txtResultado.Text != "") { if (ele.Prefe > 2) // caso seja um operador, os outros operadores seram desabilitados { btnDividir.Enabled = false; btnElevado.Enabled = false; btnMais.Enabled = false; btnPonto.Enabled = false; btnAbre.Enabled = true; btnFecha.Enabled = false; btnVezes.Enabled = false; } else { if (ele.Ele != "(") // caso seja um abre todos os operadores com excessão do - e + serão desabilitados { btnDividir.Enabled = true; btnElevado.Enabled = true; btnMais.Enabled = true; btnPonto.Enabled = true; btnVezes.Enabled = true; btnFecha.Enabled = true; } else { btnDividir.Enabled = false; btnElevado.Enabled = false; btnMais.Enabled = false; btnPonto.Enabled = false; btnFecha.Enabled = true; btnVezes.Enabled = false; } } } else { btnDividir.Enabled = false; btnElevado.Enabled = false; btnMais.Enabled = false; btnPonto.Enabled = false; btnVezes.Enabled = false; btnAbre.Enabled = true; btnFecha.Enabled = true; } if (ele.Ele == ")") // adiciona um no controle de abre parenteses { qtdParenteses2++; } else if (ele.Ele == "(") // adiciona um no controle de fecha parenteses { qtdParenteses1++; } if (qtd != 0 && ex[qtd - 1].Prefe == 1 && ele.Prefe == 1) // espera um sinal para decidir o fim do elemento, fazendo com que possa ter mais de um dígito no número { if (ex[qtd - 1].Prefe == 1 || ex[qtd - 1].Ele == "-") { ex[qtd - 1].Ele += ele.Ele; } } else if (qtd == 0 || ex[qtd - 1].Prefe != 1) { if (ele.Prefe == 3) { ele.Prefe = 1; } ex[qtd] = ele; qtd++; } else { if (ex[qtd - 1].Ele == "-" && ex[qtd - 1].Prefe == 1 && ele.Ele == "(") { ex[qtd - 1].Prefe = 3; } ex[qtd] = ele; qtd++; } if (qtd == 20) // tamanho máximo de valores que pode se adicionar { MessageBox.Show("O máximo de dados da calculadora foi alcançado", "Máximo alcançado", MessageBoxButtons.OK); btn0.Enabled = false; btn1.Enabled = false; btn2.Enabled = false; btn3.Enabled = false; btn4.Enabled = false; btn5.Enabled = false; btn6.Enabled = false; btn7.Enabled = false; btn8.Enabled = false; btn9.Enabled = false; btnAbre.Enabled = false; btnFecha.Enabled = false; btnDividir.Enabled = true; btnElevado.Enabled = false; btnMais.Enabled = false; btnMenos.Enabled = false; btnPonto.Enabled = false; qtd--; } if (ex[qtd - 1] != null && ex[qtd - 1].Prefe == 1 && ex[qtd - 1].Ele != "-") { btnAbre.Enabled = false; } else { btnAbre.Enabled = true; } } }
public Elemento(Dados d) { this.d = d; prox = null; }
public Pilha() { topo = new Elemento(null); this.topo.prox = null; this.final = this.topo; }