Umgang mit Klammern bei der Konvertierung von Infix-Ausdrücken in Postfix-Ausdrücke
Bei der Konvertierung von Infix-Ausdrücken in Postfix-Ausdrücke ist die Handhabung von Klammern erforderlich. Klammern können mehrere Ebenen von Prioritätsüberlegungen einführen, die berücksichtigt werden müssen, um eine korrekte Auswertung sicherzustellen.
In einem eingefügten Ausdruck können Klammern als Gruppierungselemente fungieren, die die Reihenfolge von Operationen ändern. Während beispielsweise der Ausdruck „2 3 4“ 14 ergibt, ergibt der Ausdruck „(2 3) 4“ 20, da die Klammer erzwingt, dass die Addition vor der Multiplikation erfolgt.
Um Klammern bei der Konvertierung zu handhaben, müssen wir die Logik wie folgt anpassen:
// 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 ) }
Wenn wir auf eine Öffnung stoßen Klammer, es wird auf den Stapel geschoben. Wenn eine schließende Klammer angetroffen wird, wird der Stapel verarbeitet, solange er Elemente enthält, die keine öffnende Klammer sind. Diese Elemente werden an die Postfix-Zeichenfolge angehängt. Sobald der Stapel leer ist oder das aktuelle Element eine offene Klammer ist, werden die schließende Klammer und die entsprechende offene Klammer aus dem Stapel und dem eingefügten Stapel entfernt, um sicherzustellen, dass die Priorität der Ausdrücke in Klammern erhalten bleibt.
Das obige ist der detaillierte Inhalt vonWie wirken sich Klammern auf die Konvertierung von Infix- in Postfix-Ausdrücken aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!