Professional Documents
Culture Documents
pilas
new Stack < String > (); //Pila
new Stack < String > (); //Pila
new Stack < String > (); //Pila
case 3:
case 4:
while(pref(P.peek()) >= pref(E.peek())) {
S.push(P.pop());
}
P.push(E.pop());
break;
case 2:
while(!P.peek().equals("(")) {
S.push(P.pop());
}
P.pop();
E.pop();
break;
default:
S.push(E.pop());
}
}
//Eliminacion de `impurezas en la expresiones
algebraicas
String infix = expr.replace(" ", "");
String postfix = S.toString().replaceAll("[\\]\\[,]",
"");
//Mostrar resultados:
System.out.println("Expresion Infija: " + infix);
System.out.println("Expresion Postfija: " + postfix);
}catch(Exception ex){
System.out.println("Error en la expresin algebraica");
System.err.println(ex);
}
}
//Depurar expresin algebraica
private static String depurar(String s) {
s = s.replaceAll("\\s+", ""); //Elimina espacios en
blanco
s = "(" + s + ")";
String simbols = "+-*/()";
String str = "";
//Deja espacios entre operadores
for (int i = 0; i < s.length(); i++) {
if (simbols.contains("" + s.charAt(i))) {
str += " " + s.charAt(i) + " ";
Cdigo en Java, que realiza la conversin de Ecuaciones escritas en Infijo a Prefijo, por medio de un par de
pilas, ah queda el cdigo para aquellos que necesiten algo de ayuda. Si ponen atencin, se agregan un par
de parntesis, sirven para el volcado de los signos restantes.
1
2
3
4
5
6
7
import javax.swing.JOptionPane;
public class Pilas {
public static void main(String[] args) {
String text = JOptionPane.showInputDialog("Dame
infijo :");
System.out.println("Prefijo : "+
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Infijo2PrefijoTxt(text));
}
public static String Infijo2PrefijoTxt(String infijo){
Pila p1 = Infijo2Prefijo(infijo);
String text = "";
while (p1.i > 0)
text += p1.pop();
return text;
}
public static Pila Infijo2Prefijo(String infijo) {
infijo = '(' + infijo ; // Agregamos al final del
infijo un ')'
int tamao = infijo.length();
Pila PilaDefinitiva = new Pila(tamao);
Pila PilaTemp = new Pila(tamao);
PilaTemp.push(')'); // Agregamos a la pila temporal un
'('
for (int i = tamao-1; i > -1; i--) {
char caracter = infijo.charAt(i);
switch (caracter) {
case ')':
PilaTemp.push(caracter);
break;
case '+':case '-':case '^':case '*':case '/':
while (Jerarquia(caracter) >
Jerarquia(PilaTemp.nextPop()))
PilaDefinitiva.push(PilaTemp.pop());
PilaTemp.push(caracter);
break;
case '(':
while (PilaTemp.nextPop() != ')')
PilaDefinitiva.push(PilaTemp.pop());
PilaTemp.pop();
break;
default:
PilaDefinitiva.push(caracter);
}
}
return PilaDefinitiva;
}
public static int Jerarquia(char elemento) {
int res = 0;
switch (elemento) {
case ')':
res = 5; break;
case '^':
res = 4; break;
case '*': case '/':
res = 3; break;
case '+': case '-':
res = 2; break;
case '(':
res = 1; break;
55
56
57
58
59
60
61
62
63
}
}
}
return res;