Menukar ungkapan infiks kepada ungkapan postfix memerlukan pengendalian kurungan yang teliti. Kehadiran tanda kurung menimbulkan cabaran dalam menentukan susunan operasi yang betul. Untuk menangani perkara ini, pendekatan berikut boleh digunakan:
Tekan Tanda Kurung Kiri: Apabila menghadapi kurungan kiri, tolaknya pada susunan operator.
Proses Tanda Kurung Betul: Apabila menemui kurungan yang betul:
Kod Java berikut menunjukkan cara mengubah suai kaedah toPostFix() untuk mengendalikan kurungan:
public String toPostFix() { StringBuilder postfixstr = new StringBuilder(); Stack<Token> in_fix = new Stack<>(); Stack<Token> post_fix = new Stack<>(); for (int i = tokens.length - 1; i >= 0; i--) { t = new Token(tokens[i]); in_fix.push(t); } //there are still tokens to process while (!in_fix.empty()) { // is a number if (in_fix.peek().type == 1) { postfixstr.append(in_fix.pop().toString()); } // is an operator and the stack is empty else if (in_fix.peek().type == 3 && post_fix.empty()) { post_fix.push(in_fix.pop()); } // is an operator that has higher priority than the operator on the stack else if (in_fix.peek().type == 3 && in_fix.peek().isOperator() > post_fix.peek().isOperator()) { post_fix.push(in_fix.pop()); } // is an operator that has lower priority than the operator on the stack else if (in_fix.peek().type == 3 && in_fix.peek().isOperator() <= post_fix.peek().isOperator()) { postfixstr.append(post_fix.pop()); post_fix.push(in_fix.pop()); } // opening ( else if (in_fix.peek().type == 4) { post_fix.push(in_fix.pop()); } // closing ) else 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 ) } //puts the rest of the stack onto the output string if (in_fix.empty()) { while (!post_fix.empty()) { postfixstr.append(post_fix.pop()); } } } return postfixstr.toString(); }
Dengan melaksanakan langkah-langkah ini, kaedah toPostFix() boleh mengendalikan ungkapan yang melibatkan kurungan dengan berkesan, memastikan susunan operasi yang betul dan menghasilkan ungkapan postfix yang dikehendaki.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Kurungan dalam Infix to Postfix Conversions?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!