遍歷整個表示式
如果是運算元,入棧;
如果是操作符,將當前棧頂元素和棧第二個元素出棧進行運算,並將結果壓棧;若是除(減)操作符,第二個元素作為被除數(被減數),棧頂元素作為除數(減數);
表示式遍歷完後,當前棧的棧頂元素即為所求表示式的值。
// 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 等價於中綴表示...