2.if(item=='(')breakㄤ;,item 沒有內容怎麼會等於'('?
並非是沒有內容 ...
而是程式在逐步取得字元符號比對的時候,當 item 變數器的內容是 ( 時,
就執行 break 中斷某個迴圈執行 ...
語法:
if (is_operand(token)) postfix[j++] = token;
else if (token == '(') push(token);
else if (token == ')')
while (S.top > -1) // if (item == '(') break; 是中斷這一個迴圈
{
pop(&item);
if (item == '(') break;
postfix[j++] = item;
}
3.為什麼會push(token)?
應該說 push(token) 的使用時機為何? 將 ( 放到堆疊裡,或是某的運算符號
放到堆疊裡
語法:
if (is_operand(token)) postfix[j++] = token;
else if (token == '(') push(token);
else if (token == ')')
while (S.top > -1)
{
pop(&item);
if (item == '(') break;
postfix[j++] = item;
}
...
...
...
else if (is_operator(token)){
...
push(token);
}
再依適當的機會把堆疊裡的東西取出,就達到中置轉後置
建議編寫不管是哪一種程式的原始碼,可以稍稍排版整理一下,如上
這樣子可以增加程式的易讀性,而且哪幾行一組,哪幾行是相關的,
哪幾行是一個 Function。 也可以利用註解幫助說明或是排版。