private string convertir(string infija) { String posfija = ""; PilaLista pila = new PilaLista(); for (int i = 0; i < infija.Length; i++) { //obtengo el caracter char caracter = infija[i]; if (operador(caracter)) { if (pila.pilaVacia()) { pila.insertar(caracter); } else { //evuluamos la prioridad if (prieoridadExpresion(caracter) > prieoridadPila((char)pila.cimaPila())) { pila.insertar(caracter); } else { //desapilar posfija += pila.quitar(); //apilamos el nuevo operador pila.insertar(caracter); } } } else { posfija += caracter; } } //sacamos todo lo de la pila while (!pila.pilaVacia()) { //desapilamos y guardamos todos los datos de la pila en la posfija posfija += pila.quitar(); } return(posfija); }
private double evaluarPosfija(string posfija) { PilaLista pila = new PilaLista(); for (int i = 0; i < posfija.Length; i++) { char caracter = posfija[i]; if (!operador(caracter)) { double num = double.Parse(caracter.ToString()); pila.insertar(num); } else { double desapilar1 = (double)pila.quitar(); double desapilar2 = (double)pila.quitar(); double desapilar3 = operar(caracter, desapilar1, desapilar2); pila.insertar(desapilar3); } } return((double)pila.cimaPila()); }