2017-10-07 117 views
-1

我們都知道,在C++中,括號中是唯一的「(」而不是「[」,我們可以檢查通過寫cout<<(2+3);它會給我的5個輸出,但如果我寫cout<<[2+3];cout<<{2+3};它會肯定會給錯誤,所以現在我們就知道,「(」是運營商和「[」是不是。綴以轉換使用堆棧

我的問題有2個部分。

我的問題的第一部分是,如果我想轉換表達式如下:

「a + b + [(b + c)+(d + e)(f + e)] (g + h)/(a + b)「 into postfix using stacks,will i push'['in stack too or i will just store it it like like other operands are stored字符串。

我的問題的第2部分是將表達式轉換爲使用堆棧的後綴後,我得到的答案是「ab + [bC++ de + fe +] * gh + * ab +/+」,它是正確的嗎?在這個過程中,我並沒有將'['放入堆棧,因爲我正在考慮將它作爲操作數。

+0

'現在我們來了解'('是一個操作符,'['不是':你是什麼意思?每個操作符都是專門爲它的操作設計的 – batMan

+0

我認爲你沒有得到我的觀點,我只是想要求中綴算法使用堆棧後綴轉換說,當你遇到一個括號時,你把它推入堆棧,而不是'['?' –

回答

0

部分-1

你應該推[入堆棧太多,這是具有相同的優先級的(運營商兩者屬於同一類,並做相同的操作。

您可以修改代碼,以便考慮[(])否則你可以在運營商設置過包括這些,讓他們有相同的優先級括號。

部分-2

ab+[bc++de+fe+]*gh+*ab+/+:考慮[操作數(比方說),這是不正確的,[(b+c)應該評估爲[bc+*因爲這將是一個乘法,同樣與(d+e)(f+e)去其前人的精力是de+fe+*就像你已評估(f+e)]fe+]*

+0

感謝@ batMan爲清除我對括號的懷疑,得到了 –

+0

我得到了「ab + bc + de + fe + * + gh + * ab +/+「作爲回答,這是正確的。感謝伴侶保佑:) –

+0

@omarkhan:乾杯! (y) – batMan