Este artículo describe el método de convertir expresiones infijo en expresiones de sufijo en estructuras y algoritmos de datos Java. Compártelo para su referencia, como sigue:
// STACKPublic Class StackX {private int top; Char privado [] StackArray; privado int maxsize; // constructor public stackx (int maxSize) {this.maxSize = maxSize; this.top = -1; stackArray = new Char [this.maxSize]; } // Poner el elemento en la parte superior de la pila public void push (char push) {stackArray [++ top] = push; } // Tome el artículo desde la parte superior de la pila pública char pop () {return stackArray [top--]; } // Mira el elemento superior de Stack public Char Peek () {return stackArray [top]; } // Mira el carácter en el índice n public char Peekn (int index) {return stackArray [index]; } // Verdadero si la pila está vacía pública boolean isEtimty () {return (top == -1); } // return stack size public int size () {return top+1; }} // Clase intopostpublic intOpost {private stackx mystack; entrada de cadena privada; String private String output = ""; // constructor public intopost (entrada de cadena) {this.input = input; mystack = new stackx (this.input.length ()); } // hacer traducción a 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); romper; case '*': case '/': this.getoper (ch, 2); romper; case '(': this.getoper (ch, 3); break; case ')': this.getoper (ch, 4); romper; predeterminado: this.output = this.output + ch; }} while (! this.mystack.isempty ()) {this.output = this.output + this.mystack.pop (); } devolver esto.output; } // Obtener operador de entrada public void getoper (charch, 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 == '(') continúa; 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.mysta.mysta.myStack; }} else {temp = this.mystack.peek (); Cadena estática Str;PS: La implementación del algoritmo no es muy perfecta, y se producirán algunos errores de análisis de expresión complejos. ¡Escribirlo como conmemoración!
Para obtener más información sobre los algoritmos de Java, los lectores interesados en este sitio pueden ver los temas: "Estructura de datos Java y tutorial de algoritmo", "Resumen de las puntas de nodo de operación de Java DOM", "Resumen de Java Archivo y TIPS de operación de directorio" y "Summary of Java Cache Operation Tips" TIPS ""
Espero que este artículo sea útil para la programación Java de todos.