史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 程式語言討論區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2011-07-24, 07:29 AM   #4 (permalink)
管理員
 
getter 的頭像
榮譽勳章
UID - 6433
在線等級: 級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時
註冊日期: 2002-12-08
住址: 天線星球
文章: 8157
精華: 0
現金: 19955 金幣
資產: 765391 金幣
預設

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。 也可以利用註解幫助說明或是排版。

此帖於 2011-07-24 11:21 AM 被 getter 編輯.
getter 目前離線  
送花文章: 37855, 收花文章: 6441 篇, 收花: 26052 次
回覆時引用此帖
向 getter 送花的會員:
bobo0836 (2011-07-25)
感謝您發表一篇好文章
 



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用

相似的主題
主題 主題作者 討論區 回覆 最後發表
討論 - 中序轉前序與後序問題 9319074 程式語言討論區 2 2009-10-23 07:41 AM


所有時間均為台北時間。現在的時間是 06:07 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1