內容:
【問題描述】
請編寫程式將乙個中綴表示式轉換為字尾表示式。
【輸入】
僅一行,是乙個中綴表示式。輸入的符號中只有這些基本符號「0123456789+-*/()」,並且不會出現形如2*-3的格式,所有數字都是個位數,「/」表示整除運算。
【輸出】
僅一行,是轉換後的字尾表示式。數字之間、運算子之間、數字和運算子之間都用乙個空格隔開(參見樣例)。
【樣例】
ex3.in
8-(3+2*6)/5+4
ex3.out
8 3 2 6 * + 5 / - 4 +
這道題對於很多資料結構書中的棧一章一般都會提到,思路清晰的話很快就能做出來,沒什麼陷阱。
/*
* 輸入一串中綴表示式,對每乙個字元進行提取
* 1.如果是數字,直接放到rs中
* 2.如果是符號,與棧頂元素進行比較
* ⑴如果棧為空,直接放進棧中
* ⑵如果棧不為空,則一直pop到rs中
* 直到①棧為空②碰到優先順序比新符號低的元素為止
* 再把新符號壓入棧中
* 需要注意的到最後棧可能還沒空,所以要乙個個pop到rs中
* * 我的兩個輔助函式isoper用來判斷是否為符號
* level用來判斷優先順序
*/#include #include #include #define outstack 1
#define instack 2
#define equal 0
using namespace std;
bool isoper(char c);
int level(char lhs, char newoper);
int main()
}else
operstk.push(*iter++);
} // 為數字
else
} // 清空棧
while (!operstk.empty())
// 輸出
iter = rs.begin();
while (iter != rs.end())
} return 0;
}bool isoper(char c)
int level(char lhs, char newoper)
}
SzNOI c003 中綴表示式轉字尾表示式
個人覺得我寫的應該是目前網上寫的版本比較簡單的了。這也是我開部落格的原因,盡量寫出簡單的 一方面可以鞏固自己,一方面也能方便別人 中綴表示式轉化為字尾表示式是通過棧實現 思路是,寫兩個函式,分別是算術操作符的優先順序,這個想法在資料結構 用物件導向方法與c 裡面這本書有大概提到 isp是棧內優先數,...
1003 中綴表示式轉字尾表示式
1003.中綴表示式轉字尾表示式 total 466accepted 89 time limit 1sec memory limit 256mb description 將中綴表示式 infix expression 轉換為字尾表示式 postfix expression 假設中綴表示式中的運算元均...
資料結構 016中綴轉字尾表示式
中綴轉字尾表示式 1.若為 直接入棧 2.若為 出棧直到 並刪掉棧中的 3.若為 1 棧空,入棧 2 若棧頂為 入棧 3 若比棧頂優先順序高,入棧 否則,彈出棧頂元素,直到出現 或者比棧頂優先順序低 4.遍歷完成,若棧非空依次彈出所有元素 include include using namespac...