Exemplos:
| infixa | pós-fixa |
|---|---|
| a-b | ab- |
| a-b*c | abc*- |
| (a-b)*c | ab-c* |
| a+b*c^d-e | abcd^*+e- |
| a*(b+c)*(d-g)*h | abc+*dg-*h* |
| a*b-c*d^e/f+g*h | ab*cde^*f/-gh*+ |
Na notação pós-fixa é importante observar que:

Nos exemplos acima, podemos observar também que:
Durante o processo de conversão, os caracteres da expressão infixa são processados da esquerda para a direita. Quando operadores com maior prioridade são vistos, esses são empilhados de modo a ocupar o topo da pilha. Eles devem permanecer na pilha até aparecer na entrada um operador de prioridade menor ou igual. Nesse caso, não há porque postergar a sua execução, e o operador deve ser impresso imediatamente na saída.
void In2Pos(char expr[]){
Pilha p;
int i = 0;
char c,t;
p = CriaPilha();
Empilha(p, '(');
do{
c = expr[i];
i++;
if(c >= 'a' && c <= 'z'){
printf("%c", c);
}
else if(c == '('){
Empilha(p, '(');
}
else if(c == ')' || c == '\0'){
do{
t = Desempilha(p);
if(t != '(')
printf("%c", t);
}while(t != '(');
}
else if(c == '+' || c == '-' ||
c == '*' || c == '/' ||
c == '^' ){
while(1){
t = Desempilha(p);
if(Prioridade(c,t)){
Empilha(p, t);
Empilha(p, c);
break;
}
else{
printf("%c", t);
}
}
}
}while(c != '\0');
printf("\n");
LiberaPilha(p);
}
| Símbolo | Pilha | Entrada |
|---|---|---|
| ^ | 3 | 4 |
| *, / | 2 | 2 |
| +, - | 1 | 1 |
| ( | 0 | 4 |
int Prioridade(char c, char t){
int pc,pt;
if(c == '^')
pc = 4;
else if(c == '*' || c == '/')
pc = 2;
else if(c == '+' || c == '-')
pc = 1;
else if(c == '(')
pc = 4;
if(t == '^')
pt = 3;
else if(t == '*' || t == '/')
pt = 2;
else if(t == '+' || t == '-')
pt = 1;
else if(t == '(')
pt = 0;
return (pc > pt);
}
int main(){
char expr[] = "a*b+c*d^e/f-g*h";
In2Pos(expr);
return 0;
}