Este artigo descreve o método de converter expressões de infix em expressões de sufixo em estruturas e algoritmos de dados Java. Compartilhe -o para sua referência, como segue:
// STACKPUBLIC CLASS STACKX {private int top; Char privado [] StackArray; privado int maxsize; // construtor public stackx (int maxsize) {this.maxsize = maxsize; this.top = -1; StackArray = novo char [this.maxSize]; } // Coloque o item no topo da pilha de push public push (char push) {stackArray [++ top] = push; } // Pegue o item do topo da pilha public Char Pop () {return StackArray [Top--]; } // Espreite o item superior da pilha pública char peek () {return stackArray [top]; } // Espreite o caractere no índice n public char peekn (int index) {return stackarray [index]; } // true se a pilha estiver vazia pública booleana isEmpty () {return (top == -1); } // retorna o tamanho da pilha public int size () {return top+1; }} // Classe intopostPublic Intopost {private Stackx MyStack; entrada de string privada; Private String Output = ""; // construtor public InopSost (string input) {this.input = input; mystack = new Stackx (this.input.length ()); } // Faça tradução para pós -fix public string Dotrans () {for (int i = 0; i <input.length (); i ++) {char ch = input.charat (i); switch (ch) {case '+': case '-': this.getOper (ch, 1); quebrar; case '*': case '/': this.getOper (ch, 2); quebrar; case '(': this.getOper (ch, 3); quebra; case ')': this.getOper (ch, 4); quebrar; padrão: this.output = this.output + ch; }} while (! this.mystack.isempty ()) {this.output = this.output + this.mystack.pop (); } return this.Output; } // Obtenha o operador de entrada public void GoToper (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 == '(') continue; this.output = this.output + temp;}} else if (prect1 == 1) {temp = this.mystack.peek (); if (temp == '(') this.mystack.push (cht); else (this.output =..Otput +.mym.mymy.mymy; }} else {temp = this.mystack.peek (); Intopot;PS: A implementação do algoritmo não é muito perfeita e alguns erros complexos de análise de expressão ocorrerão. Escreva como uma comemoração!
Para obter mais informações sobre os algoritmos Java, os leitores interessados neste site podem visualizar os tópicos: "Estrutura de dados Java e tutorial de algoritmo", "Resumo das dicas de nó da operação Java Dom", "Resumo de dicas de operação de Java e Operação de Java" e "Resumo de Java cache" Tips "TIPS"
Espero que este artigo seja útil para a programação Java de todos.