Conversion infijo a posfijo

Solo disponible en BuenasTareas
  • Páginas : 2 (386 palabras )
  • Descarga(s) : 0
  • Publicado : 30 de septiembre de 2010
Leer documento completo
Vista previa del texto
Notacion infija y postfija

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) )...
tracking img