algoritmo Infijo a Postfijo

1
CONV-POSTFIJA(EL,EPOS) //Este algoritmo traduce una expresión infija EL a postfija EPOS, haciendo uso de una pila PILA //TOPE es una variable de tipo entero TOPE = 0 Repetir mientras EL sea diferente de la cadena vacia. Tomar el simbolo mas a la izquierda de EL, recortando luego la expresión. Si simbolo es parentesis izquierdo entonces { poner simbolo en PILA} TOPE = TOPE +1 PILA [TOPE] = simbolo Si no Si simbolo es parentesis Derecho entonces Repetir mientras PILA [TOPE] <> parentesis Izquierdo EPOS = EPOS + PILA[TOPE] TOPE = TOPE -1 fin -mientras //Sacamos el parentesis izquierdo de PILA y no lo agregamos a EPOS. TOPE = TOPE -1 Si no Si simbolo es un operando entonces agregar simbolo a EPOS Si no {Es un operador} Repetir mientras TOPE >0 y prioridad del operador <= prioridad del operador de la cima de la PILA EPOS=EPOS + PILA[TOPE] TOPE = TOPE - 1 Fin-mientras TOPE =TOPE +1 PILA[TOPE]=Simbolo fin si finsi finsi fin-mientras Repetir mientras TOPE > 0 EPOS=EPOS + PILA[TOPE] TOPE = TOPE -1 Fin mientras Escribir EPOS.

description

Algoritmo para convertir expresiones infijas a postfijas

Transcript of algoritmo Infijo a Postfijo

Page 1: algoritmo Infijo a Postfijo

CONV-POSTFIJA(EL,EPOS)

//Este algoritmo traduce una expresión infija EL a postfija EPOS, haciendo

uso de una pila PILA //TOPE es una variable de tipo entero

TOPE = 0 Repetir mientras EL sea diferente de la cadena vacia.

Tomar el simbolo mas a la izquierda de EL, recortando luego la expresión.

Si simbolo es parentesis izquierdo entonces

{ poner simbolo en PILA} TOPE = TOPE +1

PILA [TOPE] = simbolo

Si no

Si simbolo es parentesis Derecho entonces Repetir mientras PILA [TOPE] <> parentesis Izquierdo

EPOS = EPOS + PILA[TOPE]

TOPE = TOPE -1 fin -mientras //Sacamos el parentesis izquierdo de PILA y no lo agregamos a EPOS.

TOPE = TOPE -1

Si no Si simbolo es un operando entonces

agregar simbolo a EPOS

Si no {Es un operador} Repetir mientras TOPE >0 y prioridad del operador <=

prioridad del operador de la cima de la PILA EPOS=EPOS + PILA[TOPE]

TOPE = TOPE - 1

Fin-mientras TOPE =TOPE +1

PILA[TOPE]=Simbolo

fin si

finsi finsi

fin-mientras

Repetir mientras TOPE > 0 EPOS=EPOS + PILA[TOPE]

TOPE = TOPE -1

Fin mientras

Escribir EPOS.