¿Cuál es la solución más simple para convertir el formulario Infix en un formulario de reparación posterior en la programación en C?

Para convertir infix a expresión de postfix, primero debemos entender la precedencia de los operadores.
Precedencia de operadores
(de mayor a menor):
Exponenciación
Multiplicación / división *, /
Suma / resta +, –
Para operadores de la misma precedencia, se aplica la regla de izquierda a derecha:
A + B + C significa (A + B) + C.
Para la exponenciación, se aplica la regla de derecha a izquierda:
A expB expC significa A exp (B epx C).
Ahora intentaremos formar un algoritmo para convertir el formulario infijo en formulario postfix. Para este propósito, se escribirá un pseudocódigo. También escribiremos los bucles y si las condiciones. El pseudocódigo es independiente de los idiomas. Usaremos una pila en este algoritmo. Aquí, la expresión infija tiene la forma de una cadena. El algoritmo es como sigue:
Pila s;
while (no final de entrada) {
c = siguiente carácter de entrada;
si (c es un operando)
agregue c a la cadena de postfix;
más {
while (! s.empty () && prcd (s.top (), c)) {
op = s.pop ();
agregar op a la cadena de postfix;
}
s.push (c);
}
while (! s.empty ()) {
op = s.pop ();
agregar op a la cadena de postfix;
}
Primero declararemos una pila ‘s’. El ‘ciclo while’ continuará hasta el final de la entrada. Leemos el carácter de entrada y lo almacenamos en la ‘c’. Aquí el carácter de entrada no significa un carácter, sino un operando u operador. Entonces tenemos una sentencia if condicional. Si ‘c’ es un operando, entonces tendremos que agregarlo a la cadena de postfix. Siempre que obtengamos un operando en el formulario infijo, se agregará al formulario de postfijo. El orden de los operandos no cambia en la conversión. Sin embargo, en este caso, el orden de los operadores puede cambiar. Si ‘c’ es el operador, primero verificaremos que la pila no esté vacía, además de identificar la precedencia de los operadores entre el operador de entrada y el operador que está en la parte superior de la pila. En caso de que la precedencia del operador que está en la pila sea mayor, la sacaremos de la pila y la enviaremos a la cadena de postfix. Por ejemplo, si tenemos * en la pila y el nuevo operador de entrada es +. Como la precedencia del operador + es menor que el operador *, los operandos de la multiplicación ya se han enviado a la expresión postfix. Ahora, deberíamos enviar el operador * al formulario de postfix. El operador más (+) esperará. Cuando el ciclo while envía todos estos operadores a la cadena de postfix, empujará al nuevo operador a la pila que está en ‘c’. Tiene que esperar hasta que obtengamos el segundo operando. Luego obtendremos nuevamente la entrada. Al completar la entrada, el ciclo while estará terminado. Puede darse el caso de que la entrada se complete incluso en el momento en que todavía hay algunos elementos en la pila. Estos son operadores. Para verificar esto, tenemos otro ciclo while. Este bucle comprueba si la pila no está vacía, muestra el operador y lo coloca en la cadena de postfix.