expression.h
/*****************
* calc_expression()
* 功能: 利用棧實現整數表示式求值
* 輸入: 表示式字串
* 輸出: 求值結果
* 日期: 2018-04-05
*******************/
#ifndef expression_h_
#define expression_h_
#include
#include
#include
#include
// -----------------將中綴表示式轉成字尾表示式-----------------
// 遍歷表示式,遇到運算元直接輸出,遇到操作符判斷棧頂優先順序
// 對於'+', '-'來說,優先順序最低,直接出棧直到棧空或者棧頂為'('
// 對於'*', '/', '('都直接壓入棧中
// 對於')',出棧直到遇到'('
static
void infix2postfix(const
std::string & strsrc, std::string & strdst)
if (strsrc[i + 1] >= '0' && strsrc[i + 1] <= '9')
else }}
else
if (c == '+' || c == '-')
s.push(c);}}
else
if (c == '*' || c == '/' || c == '(')
s.push(c);
else
if (c == ')')
s.pop();
}i++;
}while (!s.empty())
strdst = output;
}int string2int(const
std::string & str)
return result;
}float calc_expression(const
std::string & infix_str)
else
if (c == ' ')
}float digit = float(string2int(digit_str));
s.push(digit);
}else }}
return s.top();
}#endif // expression_h_
main.cpp
#include "expression.h"
int main()
(複習)資料結構 棧 表示式求值
很久都沒有寫棧的程式了呢 由腦補可以字尾式求值是要用到棧的。所有說表示式求值可以分為兩部分 1.把中綴式轉換為字尾式 2.字尾式求值 include include include include include include include using namespace std char s ...
資料結構 表示式求值(基於棧)
博前感想 表示式求值比較難理解,特別是各種表示式的優先順序需要自己設計,還要看自己怎麼把這個優先順序的比較關係帶入到程式裡面。這裡我門可以自己寫乙個簡單的棧,也可以呼叫系統自帶的 include。塊 include include include include stack有top 獲取站頂 pus...
資料結構實驗2 表示式求值(「棧」實現)
include include include include define stack init size 100 define increament 100 define zuidaweishu 10 define error 0 using namespace std class yunsua...