Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Infijo a Posfijo
leave a comment »
Bueno, ya después del programa de pilas que puse hace poco (es el articulo pasado), sigue lo de
pasar una expresión infija a posfija (luego pongo la de posfija a infija) que también se hace
mediante pilas, pero en esta se hace manualmente (es decir, lápiz y papel). Aquí están los pasos
(algoritmo) que hay que seguir:
Los operadores siguen la siguiente jerarquía (El de arriba es el que tiene mayor jerarquía hasta
abajo el que tiene la menor):
^
*/
+-
(
Ejemplo:
A+(X/Y)*B^C
Este es un ejemplo demasiado sencillo, pero explica los pasos a seguir, y como se puede ver en la
ultima fila de la tabla esta el resultado.
class converpostultima{
char ch;
int max;
expr =Leer.dato();
max=expr.length();
System.out.println();
System.out.println();
obj1.pop();
exprpost+=obj1.dret;
obj1.push(ch);
break;
obj1.pop();
exprpost+=obj1.dret;
obj1.pop();
break;
default : exprpost+=ch;
while (!(obj1.pila_Vacia(obj1.tope)))
obj1.pop();
if (obj1.dret!= '(')
exprpost+=obj1.dret;
System.out.println(exprpost);
}
public static int precedencia(char ch)
int aux = 0;
switch (ch)
break;
break;
break;
break;
return aux;
class operapilaschar
{
public static char dret;
public operapilaschar()
max=20;
public operapilaschar(int n)
max=n-1;
boolean llena;
if (tope==max)
llena=true;
else
llena=false;
return llena;
boolean vacia;
if (tope == -1)
vacia=true;
else
vacia=false;
return vacia;
if(pila_Llena(tope,max))
System.out.println("!Cuidado!, Desbordamiento!!!!!");
else
tope++;
pila[tope]=dato;// pone el nuevo dato en la pila
if (pila_Vacia(tope))
System.out.println("!Cuidado!, Subdesbordamiento!!!!!");
else {
dret=pila[tope];
tope--;
return true;
else
return false;
int i;
System.out.println(" --------------------------");
for(i=0;i<=tope;i++)
{
System.out.println("pila["+i+"] : "+pila[i]);