Basicamente consiste en que en una expresión de ese tipo primero están los operandos y después viene el operador.
Ej:
EXPR = Expresión aritmética notación infija ( Ej: 2*(23+6)-1 )
E = pila de entradaP = pila temporal para los operadores
S = pila de salida
(,2,*,(,23,+,6,),-,1,)
2.- Examinar E de izquierda a derecha y repetir los pasos 3 a 6 para cada elemento de E hasta que esta quede vacía.
3.- Si se encuentra “(”, meterlo en P.
4.- Si se encuentra un OPERADOR (+,-,*,/,^) entonces:
(a) Repetidamente sacar de P y añadir a S cada operador (de la cima de P) que tenga la misma precedencia o mayor que el operador de E.
(b) Añadir OPERADOR a P.
[Fin de condicional]
5.- Si se encuentra un “)”, entonces:
(a) Repetidamente sacar de P y añadir a S cada operador (de la cima de P), hasta que encuentre un “(”.
(b) Eliminar el “(” de P (no añadir a S).
[Fin de condicional]
6.- Si se encuentra un OPERANDO (2,23,6…), añadirlo a S.
[Fin del Bucle]
7.- Salir.
Nota: Los operadores siguen la siguiente jerarquía (El de arriba es el que tiene mayor jerarquía hasta abajo el que tiene la menor):
- ^
- * /
- + -
- )
- (
* Diagrama de flujo:
Hola excelente tutorial pero hay cosas que no entiendo, podrias hacer un video explicando la logica? seria excelente, gracias!
ResponderEliminarGracias, pero la falta de tiempo me impide hacer más de lo que yo quisiera.
EliminarHola disculpa no tienes algún ejercicio en java donde tengas el código de prefijo, posfijo e infijo
ResponderEliminar