Cet article décrit la méthode de conversion des expressions de l'infixe en expressions de suffixes dans les structures de données Java et les algorithmes. Partagez-le pour votre référence, comme suit:
// classe StackPublic StackX {private int top; Char privé [] Stackarray; privé int maxsize; // Constructor public stackX (int maxSize) {this.maxsize = maxSize; this.top = -1; stackArray = new Char [this.maxsize]; } // Mettez l'élément en haut de la pile public void push (char push) {stackArray [++ top] = push; } // Prenez l'article du haut de la pile public char pop () {return stackArray [top--]; } // Peek l'élément supérieur de Stack Public Char Peek () {return stackArray [TOP]; } // Peek le personnage à l'index n public char peekn (int index) {return stackArray [index]; } // true si la pile est vide publique booléen isEmpty () {return (top == -1); } // return stack size public int size () {return top + 1; }} // classe IntoPostPublic IntoPost {Private StackX MyStack; entrée de chaîne privée; sortie de chaîne privée = ""; // Constructeur public intoPost (string input) {this.input = input; mystack = new StackX (this.input.length ()); } // Do Traduction to PostFix public String dotrans () {for (int i = 0; i <input.length (); i ++) {char ch = input.charat (i); switch (ch) {case '+': case '-': this.getoper (ch, 1); casser; case '*': case '/': this.getOper (ch, 2); casser; cas '(': this.getoper (ch, 3); break; case ')': this.getoper (ch, 4); casser; par défaut: this.output = this.output + ch; }} while (! this.mystack.isempty ()) {this.output = this.output + this.mystack.pop (); } return this.output; } // Obtenez l'opérateur de l'entrée public void getoper (char ch, int prect1) {char temp; if (this.mystack.isempty () || prect1 == 3) {this.mystack.push (ch); } else if (prect1 == 4) {while (! this.mystack.isempty ()) {temp = this.mystack.pop (); if (temp == '(') continuer; this.output = this.output + temp;}} else if (prect1 == 1) {temp = this.mystack.peek (); if (temp == '(') this.mystack.push (ch); else {this.output = this.output + this.mystack.pop (); this.mystack. else {temp = this.myStack.Peek (); STATIC VOID MAIN (String [] Args) {Str = "(A + B) * C) -D";PS: L'implémentation de l'algorithme n'est pas très parfaite et certaines erreurs d'analyse d'expression complexes se produiront. Écrivez-le comme une commémoration!
Pour plus d'informations sur les algorithmes Java, les lecteurs qui sont intéressés par ce site peuvent afficher les sujets: "Structure de données Java et tutoriel d'algorithme", "Résumé des conseils de nœud de Dom Operation Java", "Résumé du fichier Java et des conseils d'opération de répertoire" et "Résumé des conseils d'opération Java Cache"
J'espère que cet article sera utile à la programmation Java de tous.