思路:1.先將中綴表示式轉成字尾表示式,
2.計算字尾表示式
#include #include #include #include #include #include using namespace std;
struct node;
string str;
stacks; //在change()存放操作符,在cal()中存放運算元
queueq; //存放字尾表示式的佇列
mapmap; //關於操作符的對映
void change()
q.push(temp); //存入字尾表示式的佇列中
}else
temp.op = str[i] ; //將當前操作符
s.push(temp); // 入棧
i++;
} }//for
while(!s.empty() )}
double cal() }
return s.top().num; //最後剩下的就是結果
} int main()
while(!s.empty()) s.pop(); //初始化棧,避免棧不為空,留了東西
change();
printf("%.2lf\n" , cal());
} return 0;
}
7 棧應用 加減乘數計算器
1 首先分為兩個棧 數棧和操作符棧 簡稱符棧 2 定義index變數,用於遍歷字串 6 1 2 3 如果當前遍歷的字元是數字,直接入數棧 4 如果當前遍歷的字元是操作符,分為兩種情況 4.1 如果符棧為空,直接將操作符放入符棧 4.2 如果符棧不為空,又分為兩種情況 4.2.1 如果當前操作符a的優...
簡單計算器(棧)
開始複習棧,這個題感覺見得很多,各種各樣的,但是核心思路就是把中綴表示式轉化為字尾表示式,我們老師說這個東西也叫作中序二叉樹轉後序二叉樹。大概實現的方式就是用棧來實現 最開始感覺沒啥思路,因為之前一直都不會這種題 論為什麼我這麼菜,之前沒有好好學過棧,知道了stl中有stack後還是方便很多 第一次...
hdu 1237 簡單計算器 (棧的簡單應用)
感覺自己很菜,乙個棧的應用,寫了好久,還是 能力弱啊 剛開始直接用的開了兩個棧,結果在判空時出現問題,改用自己寫的棧,還是wa,一怒之下上網查了一下,原來是我理解有問題,汗 我們在算加減乘除的時候,總是先算乘除,再算加減,還有一點就是,再算加減的時候也要從左往右算,否則就wa了。自己寫的 wa了 1...