La verdad que no se
void postfija(tcad &cadena)
{
int i, j=0;
tpila pila;
tcad expresion_postfija;
init_stack(pila);
for(i=0;i<strlen(cadena);i++){
if(isdigit(cadena[i])){
expresion_postfija[j]=cadena[i];
j++;
}
else{
if(empty_stack(pila)==true)
push_stack(pila,cadena[i]);
else{
if(prioridad(cadena[i],top_stack(pila))==true)
push_stack(pila,cadena[i]);
else{
while(empty_stack(pila)==false && prioridad(cadena[i],top_stack(pila))==false){
expresion_postfija[j]=pop_stack(pila);
j++;
}
push_stack(pila,cadena[i]);
}
}
}
}
while(empty_stack(pila)==false){
expresion_postfija[j]=pop_stack(pila);
j++;
}
expresion_postfija[j]='\0';
cout<<"Expresion postfija: "<<expresion_postfija<<endl;
}
bool prioridad(char a, char b)
{
int operador1, operador2;
switch(a){
case '^': operador1=2;break;
case '*': case '/': operador1=1;break;
case '+': case '-': operador1=0;break;
}
switch(b){
case '^': operador2=2;break;
case '*': case '/': operador2=1;break;
case '+': case '-': operador2=0;break;
}
return operador1>operador2;
}