回覆列表
  • 1 # 使用者9261073249828

    a*b*c→**abca*b*c+c*d→+**abc*cd(a+b)*((c-d)*e+f)→*+ab+*-cdef上面是波蘭式,逆波蘭式如下:a*b*c→ab*c*a*b*c+c*d→ab*c*cd*+(a+b)*((c-d)*e+f)→ab+cd-e*f+*寫出(a+b)*((c-d)*e+f)轉換時棧的變化情況:【注意,右端為棧頂】讀入(,入棧,棧中為(,輸出:(空);讀入a,直接輸出,棧中為(,輸出:a;讀入+,入棧,棧中為(+,輸出:a;讀入b,直接輸出,棧中為(+,輸出:ab;讀入),依次推出棧中的符號,直到遇見一個(【注意括號不輸出】,棧中為空,輸出:ab+;讀入*,入棧,棧中為*,輸出:ab+;讀入(,入棧,棧中為*(,輸出:ab+;讀入(,入棧,棧中為*((,輸出:ab+;讀入c,直接輸出,棧中為*((,輸出:ab+c;讀入-,入棧,棧中為*((-,輸出:ab+c;讀入d,直接輸出,棧中為*((-,輸出:ab+cd;讀入),依次推出棧中的符號,直到遇見一個(【注意括號不輸出】,棧中為*(,輸出:ab+cd-;讀入*,入棧,棧中為*(*,輸出:ab+cd-;讀入e,直接輸出,棧中為*(*,輸出:ab+cd-e;讀入+,【由於此時棧中的*的優先順序高於+,所以先將*退棧,然後+入棧】,棧中為*(+,輸出:ab+cd-e*;讀入f,直接輸出,棧中為*(+,輸出:ab+cd-e*f;讀入),依次推出棧中的符號,直到遇見一個(【注意括號不輸出】,棧中為*,輸出:ab+cd-e*f+;此時讀入已經完畢,棧中還剩一個*,輸出:ab+cd-e*f+*完畢!以上就是整個從中綴表示式到字尾表示式的過程,棧的變化情況已經都寫出來了。

  • 中秋節和大豐收的關聯?
  • 鯰魚怎麼處理乾淨?