棧的應用之一 求數學表示式求值

2021-08-22 05:59:24 字數 801 閱讀 1445

今天重新學習了資料結構:棧,它的最重要的特點就是「先進後出」或者說「後進先出」,作為資料中很重要的乙個內容,在演算法和計算機應用中很常用到,例如:函式呼叫,c和c++中區域性變數的記憶體分配、表示式求值等等。

#include #include using namespace std;

//根據棧頂的兩個運算元和操作符進行計算,並將結果壓入資料棧

void calculate(stack&operater, stack&data)

data.push(result);

}int main()

operater.pop(); //將左括號出棧

if (!operater.empty() && ('*' == operater.top() || '/' == operater.top())) //將優先順序高的乘除先進行計算

index++;

break;

}default: //如果是數值,計算運算元的值

data.push(value);//將數值入棧

if (!operater.empty() && ('*' == operater.top() || '/' == operater.top()))//將優先順序高的乘除先進行計算

break;

}} }

//對棧中的數值求解(只剩下無括號的加減運算)

while (!operater.empty())

cout << "表示式的值為:" << data.top() << endl;

return 0;

}

棧的應用之表示式求值

include include include include include include using namespace std struct stacknode 用來訪問運算子的棧 struct stacknode1 用於訪問數字的棧 typedef stacknode stack type...

棧的應用之算術表示式求值

1 2 3 4 此算術表示式由一些操作符和運算元組成。其中,操作符有 等,運算元有 1 2 3 等。對於操作符來說,其運算是有優先順序的。比如,上述表示式中,3 4應該先進行操作,將得到的結果再與2相乘。算符間的優先關係如下 運算子 根據算符間的優先關係表,使用兩個棧。乙個棧為optr,儲存運算子,...

表示式求值(資料結構書上棧的應用之一)

主要內容 表示式求值,提交nyoj通過。思路 主要就是乙個開兩個棧,然後乙個操作符棧,乙個運算元棧。我的 如下 比較簡潔 include include include include include include include include include include define ep...