Maison >Java >javaDidacticiel >Comment les parenthèses affectent-elles la conversion d'expression Infix en Postfix ?

Comment les parenthèses affectent-elles la conversion d'expression Infix en Postfix ?

DDD
DDDoriginal
2024-11-10 18:05:02223parcourir

How do Parenthesis Affect Infix to Postfix Expression Conversion?

Gestion des parenthèses dans la conversion d'expressions infixées en suffixes

La conversion d'expressions infixées en expressions postfixes implique la gestion des parenthèses. Les parenthèses peuvent introduire plusieurs niveaux de considérations de priorité, qui doivent être prises en compte pour garantir une évaluation correcte.

Dans une expression infixée, les parenthèses peuvent agir comme des éléments de regroupement qui modifient l'ordre des opérations. Par exemple, alors que l'expression "2 3 4" est évaluée à 14, l'expression "(2 3) 4" est évaluée à 20 car la parenthèse force l'addition à se produire avant la multiplication.

Pour gérer les parenthèses dans la conversion, nous devons ajuster la logique comme suit :

// opening (
if (in_fix.peek().type == 4) {   
    post_fix.push(in_fix.pop());
}
//closing )
if(in_fix.peek().type == 5){
    while(!(post_fix.isEmpty() || post_fix.peek().type == 4)){
         postfixstr.append(post_fix.pop());
    }
    if (post_fix.isEmpty())
        ; // ERROR - unmatched )
    else
        post_fix.pop(); // pop the (
    in_fix.pop(); // pop the )
} 

Lorsque nous rencontrons une parenthèse ouvrante, elle est poussée sur la pile. Lorsqu'une parenthèse fermante est rencontrée, la pile est traitée tant qu'elle contient des éléments qui ne sont pas des parenthèses ouvrantes. Ces éléments sont ajoutés à la chaîne suffixe. Une fois que la pile est vide ou que l'élément actuel est une parenthèse ouverte, la parenthèse fermante et la parenthèse ouverte correspondante sont extraites de la pile et de la pile infixe, garantissant ainsi le maintien de la préséance des expressions entre parenthèses.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn