第五周專案五

2021-08-09 12:48:15 字數 1410 閱讀 8000

/*

檔名稱:專案5.cbp

作    者:張延飛

完成日期:2023年10月10日

版 本 號:v1.0

問題描述:利用sqstack.h中棧的基本運算,實現將乙個中綴表示式轉換為對應的字尾表達

式的演算法。例如,輸入(56-20)/(4+2),輸出字尾表示式::56#20#-4#2#+/要求

在數字後加# 

輸入描述:字首表示式

程式輸出:中綴表示式 字尾表示式*/

標頭檔案及功能函式詳見

【順序棧演算法庫】

main函式**:

[cpp]

view plain

copy

#include "sqstack.h"

#define maxop 7

struct

//設定運算子優先順序

lpri= ,,,,,,},  

rpri= ,,,,,,};  

intleftpri(

char

op)    

//求左運算子op的優先順序

intrightpri(

char

op)  

//求右運算子op的優先順序

bool

inop(

char

ch)       

//判斷ch是否為運算子

intprecede(

char

op1,

char

op2)  

//op1和op2運算子優先順序的比較結果

void

trans(

char

*exp,

char

postexp)  

//將算術表示式exp轉換成字尾表示式postexp

postexp[i++]='#'

;   

//用#標識乙個數值串結束

}  else

//為運算子的情況

}  } //while (*exp!='\0')

pop(opstack, ch);  

while

(ch!=

'=')  

//此時exp掃瞄完畢,退棧到'='為止

postexp[i]='\0'

;    

//給postexp表示式新增結束標識

destroystack(opstack);  

}  int

main()    

執行結果:

知識點總結:

通過棧解決具體應用問題。

學習心得:

這個知識點比較難理解,還需要自己一步步的練習。

第五周專案1 3

檔名稱 完成日期 2014 年 3月 25 日 版本號 v1.0 對任務及求解方法的描述部分 輸入描述 無 問題描述 程式輸出 問題分析 使用帶引數建構函式 演算法設計 include include using namespace std class double x,double y,doubl...

第五周專案1 2

檔名稱 main.cpp 作 者 李德坤 完成日期 2016年3月29日 版本號 v1.0 問題描述 設計乙個三角形類,給出各成員函式的定義 輸入描述 無 輸出描述 三角形周長和面積 include includeusing namespace std class double setb doubl...

第五周專案3

煙台大學計算機學院 檔名稱 ycddd.cpp 完成日期 2017年10月6日 問題描述 判斷表示式中的各種左括號是否與右括號匹配 輸入描述 表示式 輸出描述 是否配對正確。用到了stlist.h演算法庫 include include stlist.h int main pop s,c if c ...