資料結構 用棧實現對字尾表示式的計算

2021-07-24 22:43:53 字數 709 閱讀 1777

首先提一句,我所用的ide是vs2013。編譯器不同,所支援的特性也就不同;

現在的c++已經發展到c++11版本,因此vs2008基本就不支援c++11新的特性;

我們用字尾表示式,利用資料結構中的棧,進行結果的計算

如果是運算元,則壓棧

如果是操作符,則出棧兩個元素,根據操作符進行計算之後再壓棧

#includeusing namespace std;

#include"stack.h"

enum type//定義乙個列舉型別,讓我們觀察起來更加直觀

;struct cell//定義cell結構體

;int countrpn(cell* cell, size_t n)

else if (cell[idx]._type == op_symbol)//當型別為操作符,就取出兩個元素,求值再壓棧

}else//型別錯誤,丟擲異常

}return s.top();//返回棧中最後乙個元素,就是我們求得的結果

}

資料結構棧之計算字尾表示式

對於乙個給定的字尾表示式,如果它是合法的 注意 次演算法是基於基本操作符是2元操作符且運算元為一位正整數!其求值的基本思想是 對於給定的表示式進行遍歷,假設遇到的是運算元就將其壓入棧 假設遇到的是操作符,將棧頂的兩個元素彈出,假設棧頂兩個元素依次為a,b a在上b在下 將次操作符應用於這兩個棧頂元素...

表示式 棧的實現 資料結構

這段 對一些讀入的非法資料判斷存在錯誤 比如像出現 a b 就無法判斷了 另外需要注意的是我覺得棧裡面儲存的是char型的,但是在運算元值的時候,會很不方便 還有一點在主函式裡面如果想用while來多次讀入資料的話,那麼你要考慮上一次輸入資料失敗後,那後面的字元該怎麼操作 上面出現的問題大家可以嘗試...

資料結構《中綴表示式轉字尾表示式的實現》

主要功能 利用棧將中綴表示式轉換成字尾表示式 並對字尾表示式求值。include include include using namespace std define maxsize 50 typedef char elemtype typedef struct sqstack typedef st...