棧及簡單表示式求值

2021-07-11 09:51:15 字數 820 閱讀 4448

這裡給出了棧的基本構建,包括:入棧,出棧,判斷棧是否為空,返回棧頂元素

然後表示式求值的函式,建立兩個棧,乙個用來儲存數字,另外乙個用來儲存符號運算子,如果當前為數字,將數字入棧,如果是符號,將判斷棧裡的符號與當前符號的優先順序,如果優先順序高於棧裡符號,入棧,反之,將棧裡的數字進行計算,將得出的數字入棧

#include

#include

#include

using

namespace

std;

template

class stack

~stack()

bool push(const type &element)

top_index++;

urls[top_index] = element;

return

true;

}bool pop()

top_index--;

return

true;

}type top()

bool empty() else

}};bool precede(char a, char b) else

}int operate(char theta, int a, int b) else

}void calc(stack &numbers, stack &operators)

int main()

else

else}}

while(!operators.empty())

cout

0;}

表示式求值(棧)

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 acm隊的mdd想做乙個計算器,但是,他要做的不僅僅是一計算乙個a b的計算器,他想實現隨便輸入乙個表示式都能求出它的值的計算器,現在請你幫助他來實現這個計算器吧。比如輸入 1 2 4 程式就輸出1.50 結果保留兩位小數 輸入...

棧 表示式求值

核心演算法思想 1.運用兩個棧,乙個存運算子,乙個存數值 2.以 做為標誌位,開頭或者結尾 3.檢查當前字元,若當前字元為數值,則加入數值棧,若為運算子,則檢驗當前運算子的優先順序,1 若當前運算子優先順序大於棧頂優先順序,則把該運算子壓入棧 2 若當前運算子優先順序等於棧頂優先順序 括號的情況 則...

棧 表示式求值

把運算的處理專門放在乙個函式裡,然後通過優先順序的判斷去呼叫函式,注意那個 還是放在else if裡面吧,不要和運算混在一起了 includeusing namespace std const int n 1e5 10 stacks1 stacks2 int flag 0 處理 四個 mapcmp ...