تصف هذه المقالة طريقة تحويل تعبيرات Infix إلى تعبيرات لاحقة في هياكل بيانات Java والخوارزميات. شاركه للرجوع إليه ، على النحو التالي:
// stackpublic class stackx {private int top ؛ char private [] stackarray ؛ Private Int MaxSize ؛ // constructor public stackx (int maxSize) {this.maxSize = maxSize ؛ this.top = -1 ؛ StackArray = new char [this.maxSize] ؛ } // ضع العنصر فوق Stack Public void push (char push) {StackArray [++ top] = push ؛ }. }. } // نظرة خاطفة على الحرف في index n public char peekn (int index) {return stackarray [index] ؛ } // true إذا كان المكدس فارغًا منطقيًا عامًا isempty () {return (top == -1) ؛ } // return stack size size int () {return top+1 ؛ }} // intopostpublic class intopost {private stackx mystack ؛ إدخال سلسلة خاصة إخراج السلسلة الخاصة = "" ؛ // constructor public intopost (string input) {this.input = input ؛ mystack = new stackx (this.input.length ()) ؛ }. Switch (ch) {case '+': case '-': this.getoper (ch ، 1) ؛ استراحة؛ Case '*': case '/': this.getoper (ch ، 2) ؛ استراحة؛ Case '(': this.getoper (ch ، 3) ؛ break ؛ case ')': this.getoper (ch ، 4) ؛ استراحة؛ الافتراضي: this.output = this.output + ch ؛ }} بينما (! هذا. } إرجاع هذا. } // الحصول على المشغل من إدخال public void getOper (char ch ، int prect1) {char temp ؛ if (this.mystack.isempty () || prect1 == 3) {this.mystack.push (ch) ؛ } آخر إذا (prect1 == 4) {بينما (! this.mystack.isempty ()) {temp = this.mystack.pop () ؛ إذا استمر (temp == '(') this.mystack.peek () ؛ [] args) {str = "(a+b)*c) -d" ؛ملاحظة: إن تنفيذ الخوارزمية ليس مثاليًا للغاية ، وسوف تحدث بعض أخطاء تحليل التعبيرات المعقدة. اكتبها كاحتفال!
لمزيد من المعلومات حول خوارزميات Java ، يمكن للقراء المهتمين بهذا الموقع عرض الموضوعات: "بنية بيانات Java وبرنامج تعليمي الخوارزمية" ، "ملخص" Tips Java ".
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.