Conversion infijo a posfijo
Notación infija
es la notación comúnmente usada en aritmética, y consiste en poner los operadores entre los operandos, el análisis y la interpretación por parte de lamaquina de esta notación es muy mala.
Notación posfija
También llamada notación polaca inversa, en esta primero van los operandos y luego viene el operador, es mucho más sencilla de leer para lamaquina y puede prescindir de signos de agrupación.
(a+B)*(c+d) notación infija
Ab+cd-* notación postfija
Conversión de notación infija a posfija
Para esta conversión se recorre la expresióninfija, y siguiendo los siguientes criterios se ubican los números, operadores y variables en una de las dos estructuras destinadas ha este fin. En la pila “op” se almacenan operadores, y en la lista“salida” se organiza la expresión postfija. Los criterios para la distribución son los siguientes.
-si el elemento leído es un ‘ (‘ se apila en “op”.
-si el elemento leído es un ‘ )’ se ingresan a laizquierda de la lista, todos los operadores q aya en la cola hasta encontrar un ‘ (‘. (ninguno de los dos paréntesis se ubica en la lista)
-si el elemento leído es una variable o un numero, se agregaa la izquierda de la lista.
-si el elemento leído es un operador y es menor o igual a el operador en la pila, se agregara a la izquierda de la lista los operadores en la pila hasta encontrar un ‘ )’o hata que el operador en pila sea de menor preferencia, cuando esto ocurre el operador se apila.
El orden de preferencia es: ( > ) > ^ > / > * > - > +
Seudocódigo de laconversión
convertirInfijo( lista in)
crearlistanula(out)
crearpilanula(ops)
x=primero(in)
mientras ( siguiente(x,in) != null )
según-sea (x)
caso unNumero(x): agregar( x, ultimo( in ), in )caso unaVariable(x): agregar(x, ultimo( in ), in)
caso unParentesisIZQ(x): bol=push(x, ops)
caso unParentesisDER(x):
mientras ( pop(y, ops) && unParentesisIZQ(y) )...
Regístrate para leer el documento completo.