}//method public static String toPostfix(String cad) { String res = ""; LkStack <char> pila = new LkStack <char>(); char c; for (int i = 0; i < cad.Length; i++) { c = cad.ElementAt(i); if (char.IsLetterOrDigit(c) || c == '.') { res += c; } else { if (res.Length >= 1) { if (res.ElementAt(res.Length - 1) != ' ') { res += " "; } } if (c == '(') { pila.push(c); } else { if (c == ')') { while (!pila.isEmpty() && pila.peek() != '(') { res += pila.pop() + " "; } if (!pila.isEmpty() && pila.peek() == '(') { pila.pop(); } } else { while (!pila.isEmpty() && jerarquia(c) <= jerarquia(pila.peek())) { res += pila.pop() + " "; } pila.push(c); } } } } res += " "; while (!pila.isEmpty()) { res += pila.pop() + " "; } return(res); }//method
}//method public static double resuelvePf(LkStack <string> expresion) { double resp, aux1, aux2; char oper; LkStack <string> pila = new LkStack <string>(); resp = Convert.ToDouble(expresion.peek()); while (!expresion.isEmpty()) { try { Convert.ToDouble(expresion.peek()); pila.push(expresion.pop()); } catch { aux1 = Convert.ToDouble(pila.pop()); aux2 = Convert.ToDouble(pila.pop()); oper = (expresion.pop().ElementAt(0)); switch (oper) { case '+': resp = aux2 + aux1; break; case '-': resp = aux2 - aux1; break; case '*': resp = aux2 * aux1; break; case '/': resp = aux2 / aux1; break; } string t = "" + resp; pila.push(t); } } return(resp); }//method
}//method public static LkStack <string> stringPila(String cadena) { String[] aux; Boolean ayuda; ayuda = true; LkStack <string> pila; int i; i = 0; while (i < cadena.Length && ayuda) { if (cadena.ElementAt(i) == '+' || cadena.ElementAt(i) == '-' || cadena.ElementAt(i) == '*' || cadena.ElementAt(i) == '/') { ayuda = false; } i++; } pila = new LkStack <string>(); if (ayuda) { pila.push(cadena); Console.WriteLine(pila.peek()); } else { aux = cadena.Split(' '); for (i = aux.Length - 1; i >= 0; i--) { switch (aux[i]) { case "-": pila.push("-"); break; case "+": pila.push("+"); break; case "*": pila.push("*"); break; case "/": pila.push("/"); break; default: pila.push(aux[i]); break; } //switch } //for } //else return(pila); } //method