Ajuda em criar pilha

1 resposta
W
Bom com o código a seguir
import java.util.Scanner;
public class ExpresaoMath {
	public static void main(String[] args) {
		Expressao pilha = new Expressao(6);
		
		Scanner in = new Scanner(System.in);   
		System.out.println("Digite uma expressão algébrica no formato {[()]}\n");     
		String expr = in.nextLine(); 
					
		for (int i = 0; i <= expr.length() - 1; i++) {
			if (pilha.getDelimitador(expr.charAt(i))) {
				pilha.empilha(expr.charAt(i));
			}
		}
		String aux = pilha.retornaFormato();
		if (aux.equals("{[()]}")) {
			System.out.println("Expressão Correta");
		} else {
			System.out.println("Expressão Incorreta");
		}
	}
}
class Expressao {
	protected String elementos[];
	private int topo;
	protected char[] delimitadores = {'{', '[', '(', ')', ']', '}'};
	public Expressao(int tamanho) {
		topo = -1;
		elementos = new String[tamanho];
	}
	public void empilha(char x) {
		topo++;
		elementos[topo] = String.valueOf(x);
	}
	public void desempilha() {
		topo--;
	}
	public String elementoTopo() {
		return elementos[topo].toString();
	}
	public boolean pilhaCheia() {
		return (topo == elementos.length - 1);
	}
	public boolean listaVazia() {
		return (topo == -1);
	}
	public boolean getDelimitador(char valor) {
		boolean ok = false;
		for (int i = 0; i <= delimitadores.length - 1; i++) {
			ok = delimitadores[i] == valor ? true : false;
			if (ok) {
				break;
			}
		}
		return ok;
	}
	public String retornaFormato(){
		String formato = "";
		for (int i = 0; i <= elementos.length-1; i++) {
			formato += elementos[i];             
		}
		return formato;
	}
}

Gostaria de ajuda para implementar dois vetores no codigo acima

um que empilhe os caracteres { [ (
e outro que desempilhe ) ] }

Isso seria para validar uma expressão matemática exemplo: se na expressão é recebido um abre colchetes e um abre parentese ela teria de receber em ordem inversa um facha parentese e um fecha colchetes, caso contrario daria a mensagem de Expressão errada.

1 Resposta

denisspitfire

cara tem varios topicos que ja resolveram o problema…
google também pode ajudar um pouco

Criado 24 de agosto de 2011
Ultima resposta 24 de ago. de 2011
Respostas 1
Participantes 2