private static String convertir(String infija) { String posfija = ""; PilaLineal pila = new PilaLineal(); for (int i = 0; i < infija.Length; i++) { char letra = infija[i]; if (esOperador(infija[i])) { if (pila.pilaVacia()) { pila.insertar(letra); } else { int pe = prioridadEnExpresion(letra); int pp = prioridadEnPila((char)pila.cimaPila()); if (pe > pp) { pila.insertar(letra); } else { posfija += pila.quitarChar(); pila.insertar(letra); } } } else { posfija += letra; } } while (!pila.pilaVacia()) { posfija += pila.quitarChar(); } return(posfija); }
private static double evaluarPosFija(String posfija) { PilaLineal pila = new PilaLineal(); for (int i = 0; i < posfija.Length; i++) { char letra = posfija[i]; if (!esOperador(letra)) { double num = Convert.ToDouble(letra + ""); pila.insertar(num); } else { double num2 = (double)pila.quitarChar(); double num1 = (double)pila.quitarChar(); double num3 = operacion(letra, num1, num2); pila.insertar(num3); } } return((double)pila.cimaPila()); }