while (temp->left->oper == '+' ||
temp->left->oper == '-' ||
temp->left->oper == '*' ||
temp->left->oper == '/' ||
temp->right->oper == '+' ||
temp->right->oper == '-' ||
temp->right->oper == '*' ||
temp->right->oper == '/')
{
// do something
}
Pour plus de clarté : temp
est un pointeur qui pointe vers le suivant node
structure :
struct node
{
int num;
char oper;
node* left;
node* right;
};
1 votes
Sans connaître les dépendances entre
temp->left
ytemp->right
vous ne pouvez pas optimiser dans tous les opérateurs égaux. Optiquement, vous pourriez utiliser des expressions régulières, mais en interne, c'est probablement à peu près la même chose, voire moins efficace.3 votes
Je serais intéressé de savoir pourquoi vous pensez avoir ce problème. Cela ressemble à l'interprétation d'un arbre d'expression au moment de l'exécution, et si c'est le cas, il existe de bien meilleures façons de le faire.