演算法 棧實現字尾表示式求值

2021-08-04 00:12:26 字數 562 閱讀 8506

遍歷整個表示式

如果是運算元,入棧;

如果是操作符,將當前棧頂元素和棧第二個元素出棧進行運算,並將結果壓棧;若是除(減)操作符,第二個元素作為被除數(被減數),棧頂元素作為除數(減數);

表示式遍歷完後,當前棧的棧頂元素即為所求表示式的值。

// ps:本示例**只對10以內的整數有效

#include "stdafx.h"

#includeusing namespace std;

double val(double a, char op, double b)

else

return a / b;

default:

cout << "error" << endl;

return 0;}}

int _tmain(int argc, _tchar* argv)

;for (int i = 0; i < sizeof(tt) / sizeof(char); ++i)

}cout << stack[top--]

}

字尾表示式實現表示式求值

看到別人寫的乙個表示式求值程式,想到很久之前寫的乙個。中間有個字串轉數值型,可以用stringstream來實現或者c語言裡面的strtod直接得到 include include include include includeusing namespace std class data doubl...

表示式求值 棧實現

宣告 僅個人小記 演算法思想 一 設定乙個運算子棧,設定乙個字尾表示式字串 二 從左到右依次對中綴表示式中的每個字元ch分別進行一下處理,直至表示式結束 1.若ch是左括號 將其入棧 2.若 ch 是數字,將其後連續若干數字新增到字尾表示式字串之後,在新增空格作為分割符 3.若ch是運算子,先將棧頂...

字尾表示式求值

字尾表示式求值過程中不需要考慮運算子的優先順序,只需要對該表示式中的每乙個元素進行判斷,若為運算元則將其儲存在乙個陣列裡 入棧 若為運算子則取出前面的兩個運算元 彈棧 並運算,並將運算結果放回該陣列 入棧 最終陣列的最後乙個元素 棧頂元素 即為該表示式的運算結果.如 字尾表示式 23 等價於中綴表示...