這是《資料結構》這門課的課後練習題,很典型的一道題,總結記錄一下
題目:表示式轉換
算術表示式有字首表示法、中綴表示法和字尾表示法等形式。日常使用的算術表示式是採用中綴表示法,即二元運算子位於兩個運算數中間。請設計程式將中綴表示式轉換為字尾表示式。
輸入在一行中給出不含空格的中綴表示式,可包含+
、-
、*
、\
以及左右括號()
,表示式不超過20個字元。
在一行中輸出轉換後的字尾表示式,要求不同物件(運算數、運算符號)之間以空格分隔,但結尾不得有多餘空格。
2+3*(7-4)+8/4
2 3 7 4 - * + 8 4 / +
比如a+b*c+(d*e+f)*g
string型別讀入
如果遇到字母直接入佇列
乘法除法優先順序比加減法要高
優先順序高的入站
優先順序相等或者低的,先把高的入佇列,再把當前的入棧
如果遇到『(』直接入棧
如果遇到『)』 在堆疊中往頭找,直到找到『(』為止,並且刪除堆疊中的『(』
#include#include#include#includeusing namespace std;
int main()
else if (c == '+' || c == '-')}}
else if (c == '*' || c == '/')}}
else if (c == '(')//左括號直接進入堆疊
s1.push(ts + c);
else if (c == ')')//右括號直接迴圈到遇到左括號為止}}
}while (!s1.empty())
if (!q1.empty())
//否則string型別無法用%s這樣輸出
while (!q1.empty())
puts("");
return 0;
}
ACM刷題之路(二)談談我對ACM的理解
2020年2月新增 這篇文章是我在大一下學期 2018年4月 寫的,那時候看見我身邊的acmer寫做題總結用了部落格,然後我也很快加入了進來。後來在做題的時候,遇到那些不太會的acm題目,會多做幾遍,然後有時間就寫個總結,以便以後遇到類似的題能夠得心應手。現在大三了,回想起大一大二的那一部分acm的...
ACM刷題之路(十三)資料結構 鍊錶
順序表之後是鍊錶,鍊錶是線性表的第二種結構。單 鍊錶根據 資料結構 這本書 需要會寫初始化 插入 查詢 刪除 取長度的函式。首先是結構體的定義 typedef的意思是取別名。把lei這個小名 給int 修改線性表資料型別的時候可以直接改動 typedef int lei struct ss 第乙個是...
ACM刷題之路(七)字串處理 記元培ACM院賽
時間限制 普通 j a 1000ms 3000ms 執行記憶體限制 65536kbyte 總提交 320 測試通過 66 描述 最近在用安卓做畢業設計,用到的類名 方法名 變數名 常量名不下一百個,開始的時候 會在意這些命名的規則,拼音什麼的都出現了,但隨著名稱的增加,都分不清哪些是方法名,哪些是變...