資料結構 棧實現表示式求值

2021-08-18 17:59:54 字數 1406 閱讀 2538

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...