棧的應用 表示式求值

2021-08-20 19:24:59 字數 839 閱讀 9331

表示式求值
前言

就在上一周,我對表示式求值死磕(差不多打了1000多行吧),但還是沒做對,我只得死等到週六,去把這道題問我那位萬能的盆友,在那位盆友的只支援2種符號(+,)的基礎上擴了一點**把它改為4則運算(+,-,,/)但是只有49行!

關於思路

這道題在網上有很多題解,而且都在200多行左右,雖然人家有注釋但是這麼多你想理解人家的思路嗎?所以越精簡越好.

網上,書上,通常會定義數字棧和字元棧 在此專案中也需要定義兩個棧.此題也利用了c++的特性,在迴圈中直接輸入cin>>a; (完整:while(cin>>a))

迴圈中如果是*,/直接運算,如果是+,-將字元入字元棧,數字棧入剛輸入的數.最後定乙個迴圈,如果現在字元棧是+則計算此值與下乙個值的和,減法也同理。

**

#include 

using

namespace

std;

int s[1001];

char b[1001];

int main()

else

if(k=='/')

else

if(k=='+'||k=='-')

}t++;

for(;top>0;top--)

cout

<0];

return

0;}

!!!使用**注意:此**執行輸入完輸入換行之後需輸入兩次ctrl+d換行才會有結果(輸入輸出流不用).

棧應用 表示式求值

include stdafx.h include using namespace std const int explenght 20 const int stack init size 20 const int stack incrment 10 templateclass stack stack...

棧應用 表示式求值

include include define length 100 初始分配棧的長度 define add len 10 棧長增量 typedef struct 定義字元棧 sqstack void initstack sqstack s 初始化乙個棧 void push sqstack s,int...

表示式求值 棧的應用

表示式求值 西西設計的機械人卡多掌握了加減法運算以後,最近又學會了一些簡單的函式求值,比如,它 知道函式min 20,23 的值是20 add 10,98 的值是108等等。經過訓練,西西設計的機械人卡多 甚至會計算一種巢狀的更複雜的表示式。假設表示式可以簡單定義為 1.乙個正的十進位制數 x 是乙...