บทความนี้อธิบายวิธีการแปลงการแสดงออกของ infix เป็นนิพจน์ต่อท้ายในโครงสร้างข้อมูล Java และอัลกอริทึม แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
// stackpublic คลาส stackx {private int top; ถ่านส่วนตัว [] Stackarray; Maxsize ส่วนตัว // constructor สาธารณะ stackx (int maxsize) {this.maxsize = maxSize; this.top = -1; stackarray = ถ่านใหม่ [this.maxsize]; } // ใส่รายการที่ด้านบนของสแต็กโมฆะ push (push ถ่าน) {stackarray [++ top] = push; } // นำไอเท็มจากด้านบนของสแต็กถ่านถ่านป๊อป () {return stackarray [top--]; } // ดูรายการด้านบนจากสแต็กสาธารณะถ่าน peek () {return stackarray [top]; } // แอบดูอักขระที่ดัชนี N Public Char Peekn (INT ดัชนี) {return stackarray [ดัชนี]; } // จริงถ้าสแต็กเป็นบูลีนสาธารณะที่ว่างเปล่า isempty () {return (top == -1); } // ส่งคืนขนาดสแต็กขนาด int สาธารณะ () {return top+1; }} // intopostpublic คลาส intopost {private stackx mystack; อินพุตสตริงส่วนตัว เอาต์พุตสตริงส่วนตัว = ""; // Intructor Intopost สาธารณะ (อินพุตสตริง) {this.input = อินพุต; mystack = ใหม่ stackx (this.input.length ()); } // ทำการแปลเป็นสตริงสาธารณะ postfix dotrans () {สำหรับ (int i = 0; i <input.length (); i ++) {char ch = input.charat (i); สวิตช์ (ch) {case '+': case '-': this.getoper (ch, 1); หยุดพัก; กรณี '*': case '/': this.getoper (ch, 2); หยุดพัก; กรณี '(': this.getoper (ch, 3); break; case ')': this.getoper (ch, 4); หยุดพัก; ค่าเริ่มต้น: this.output = this.output + ch; }} ในขณะที่ (! this.mystack.isempty ()) {this.output = this.output + this.mystack.pop (); } return this.output; } // รับโอเปอเรเตอร์จากอินพุตสาธารณะเป็นโมฆะ getoper (ถ่าน ch, int prect1) {char temp; if (this.mystack.isempty () || prect1 == 3) {this.mystack.push (ch); } อื่นถ้า (prect1 == 4) {ในขณะที่ (! this.mystack.isempty ()) {temp = this.mystack.pop (); if (temp == '(') ดำเนินการต่อ; this.output = this.output + temp;}} อื่นถ้า (prect1 == 1) {temp = this.mystack.peek (); ถ้า (temp == '(') this.mystack.push (ch); }} else {temp = this.mystack.peek (); ถ้า (temp == '(' || temp == ' +' || temp == '-') this.mystack.push (ch); Intopost; String String ส่วนตัว;PS: การใช้อัลกอริทึมไม่สมบูรณ์แบบมากและข้อผิดพลาดในการแยกวิเคราะห์การแสดงออกที่ซับซ้อนบางอย่างจะเกิดขึ้น เขียนมันออกมาเป็นที่ระลึก!
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับอัลกอริทึม Java ผู้อ่านที่มีความสนใจในเว็บไซต์นี้สามารถดูหัวข้อ: "โครงสร้างข้อมูล Java และการสอนอัลกอริทึม", "บทสรุปของเคล็ดลับการดำเนินงาน Java Dom", "บทสรุปของไฟล์ Java และเคล็ดลับการดำเนินการไดเรกทอรี" และ "สรุป
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน