<font size="1">Hola buen día, he estado tratando de convertir una operación infija a posfija. Me dieron escritos los requisitos e hice mi algoritmo pero la expresión me quedaba con paréntesis abiertos. Buscando en su página encontré que mi algoritmo tenía un error en la evaluacion de la prioridad de operadores, lo cambié y ahora el programa no corre.<br>

Estoy segura que mis funciones de pila y lista doblemente enlazada(donde guardo la expresión postfija) son correctas, ya las he probado. Este es el código del algoritmo, muchas gracias de antemano.</font><div><font size="1"><br>

</font></div><div><div><font face="courier new, monospace" size="1">Pila *pila = CrearPila();</font></div><div><font face="courier new, monospace" size="1">Lista *posfija = CrearLista();</font></div><div><font face="courier new, monospace" size="1">char e; // Caracter de la operacion infija</font></div>

<div><font face="courier new, monospace" size="1">char* expresion="(a+b)/(c*d)";// Use esta porque conozco el resultado: ab+cd*/</font></div><div><font face="courier new, monospace" size="1"><br></font></div><div>

<font face="courier new, monospace" size="1">int i=0;</font></div><div><font face="courier new, monospace" size="1">while(expresion[i])</font></div><div><font face="courier new, monospace" size="1">{</font></div><div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">     </span>e=expresion[i];</font></div>

<div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">       </span>i++;</font></div><div><font face="courier new, monospace" size="1"><br></font></div><div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">        </span>if(isalpha(e)) // Si es un caracter (operando)</font></div>

<div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">       </span>{</font></div><div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">                </span>Insertar(posfija, e); // Pasa a la expresion postfija </font></div>

<div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">       </span>}</font></div><div><span class="Apple-tab-span" style="white-space:pre"><font face="courier new, monospace" size="1">                </font></span></div>

<div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">       </span>if(EsOperadorValido(e))// Es un operador</font></div><div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre"> </span>{</font></div>

<div><span class="Apple-tab-span" style="white-space:pre"><font face="courier new, monospace" size="1">                               </font></span></div><div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre"> </span><b>while(!EsVacia(pila) && (Tope(pila)!='(') && (PrioridadOperador(Tope(pila) >= PrioridadOperador(e)) // esto es lo que le cambié</b></font></div>

<div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">       </span>{</font></div><div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">        </span>Insertar(posfija, Pop(pila));</font></div>

<div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">       </span>}</font></div><div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">        </span>Push(e, pila);</font></div>

<div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">       </span>}</font></div><div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">        </span>if(e=='(') // Es un (</font></div>

<div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">       </span>{</font></div><div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">        </span>Push(e,pila); // Agregar a la pila </font></div>

<div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">       </span>}</font></div><div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">        </span>if(e==')') // Es un )</font></div>

<div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">       </span>{</font></div><div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">        </span>while(Tope(pila) != '(') // Sacar elemntos de la pila hasta encontrar un parentesis que abre</font></div>

<div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">       </span>{</font></div><div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">        </span>Insertar(posfija, Pop(pila));</font></div>

<div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">       </span>}</font></div><div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">        </span>Pop(pila);</font></div>

<div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">       </span>}</font></div><div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div>

<div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">       </span> // Sacar los operadores restantes</font></div><div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">       </span> while(!EsVacia(pila))</font></div>

<div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">       </span> {</font></div><div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">               </span> Insertar(posfija, Pop(pila));</font></div>

<div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">       </span> }</font></div><div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">       </span> cout <<"Expresion en notacion postfija: ";</font></div>

<div><font face="courier new, monospace" size="1"><span class="Apple-tab-span" style="white-space:pre">       </span> Mostrar(posfija);</font></div></div>