Lorsque nous entrons une expression infixe simple similaire à "7*2+100-5+3-4/2", notre compilateur peut utiliser le code que nous avons écrit pour convertir cette expression en Scannez l'expression et calculez le résultat
Il y a deux éléments principaux dans cette expression, l'un est un nombre et l'autre est un symbole, nous devons alors créer deux structures de pile pour stocker les données
Number stack numStack : stockage Number
symbol stackoperStack : stocke les opérateurs
1. Nous devons d'abord définir un index pour parcourir notre expression
2 Si un numéro est scanné, il est directement placé dans la pile de numéros
3. il sera divisé selon les situations suivantes :
3.1. Si la pile de symboles actuelle est vide, poussez-la simplement directement dans la pile
3.2. Si la pile de symboles a un opérateur, elle doit être comparée
Si le la priorité de l'opérateur actuel est inférieure ou égale à l'opérateur dans la pile, vous devez extraire deux nombres de la pile de numéros, extraire un symbole de la pile de symboles, effectuer l'opération, obtenir le résultat et le mettre dans le pile de nombres. Ensuite, placez l'opérateur actuel dans la pile de symboles
Si la priorité de l'opérateur actuel est supérieure à l'opérateur dans la pile, placez-le directement dans la pile de symboles
4. Lorsque l'analyse d'expression est terminée, supprimez séquentiellement la pile de nombres et les symboles de la pile. Retirez les nombres et les symboles correspondants de la pile et effectuez des calculs
5. Le dernier nombre conservé dans la pile de nombres est le résultat de l'opération
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!