算术运算式的表示法.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4-5 佇列的應用 範例 4.5.1 請以java語言來實作一個環狀佇列的工作運算程式。當要取出資料時可輸入0,要結束時可輸入-1。 4-5 佇列的應用 優先佇列 為一種不必遵守佇列特性-FIFO(先進先出)的有序串列,其中的每一個元素都賦予一個優先權(Priority),加入元素時可任意加入,但有最高優先權者(Highest Priority Out First, HPOF)則最先輸出。 例如假設有4個行程P1,P2,P3,P4,其在很短的時間內先後到達等待佇列,每個行程所執行時間如下表所示: 4-5 佇列的應用 在此設定每個P1、P2、P3、P4的優先次序值分別為2,8,6,4(此處假設數值越小其優先權越低;數值越大其優先權越高),以下就是以甘特圖(Gantt Chart)繪出優先權排程(Priority Scheduling, PS)的排班情況: 以PS方法排班所繪出的甘特圖如下: 4-5 佇列的應用 雙向佇列 雙向佇列(Deques)是英文名稱(Double-ends Queues)的縮寫,雙向佇列(Deque)就是一種前後兩端都可輸入或取出資料的有序串列。如下圖所示: 在雙向佇列中,我們仍然使用2個指標,分別指向加入及取回端,只是加入及取回時,各指標所扮演的角色不再是固定的加入或取回,而且兩邊的指標都是往佇列中央移動。其他部份則和一般佇列無異。 4-5 佇列的應用 範例 4.5.2 請設計一Java程式,來實作輸入限制性雙向佇列。我們只能從一端加入資料,但取出資料時,將分別由前後端取出。如下圖所示: QA討論時間 本章結束 中序→後序(infix→postfix) (1).先把運算式依照運算子優先順序以括號括起來。 (2).針對運算子,把括號內的運算子取代所有的右括號,以最近者為優先。 (3). 將所有左括號去掉,即得後序式結果。 後序式:629*3/+42*+8- 範例 4.3.1 請將中序式A/B**C+D*E-A*C,利用括號法轉換成前序式與後序式。 4-3 算術運算式的表示法 解答 首先請按照前面的括號法說明,將中序式括號後,可以得到下列式子,並移動運算子來取代左括號: 最後去掉所有右括號,可得下式: →前序式:-+/A**BC*DE*AC 接著要轉換成後序法也一樣,將中序式分別括號完後,移動運算子來取代右括號: 最後再去掉所有左括號,可得下式: →後序式:ABC**/DE*+AC*- 4-3 算術運算式的表示法 2. 堆疊法 中序→前序(Infix→Prefix) (1).由右至左讀進中序運算式的每個字元(token)。 (2).如果讀進的字元為運算元,則直接輸出到前序式中 (3).如果遇到(,則彈出堆疊內的運算子,直到彈出到一個),兩者互相抵銷止。 (4). )的優先權在堆疊內比任何運算子都小,任何運算子都可壓過它,不過在堆疊外卻是優先權最高者。 (5)當運算子準備進入堆疊內時,並須和堆疊頂端的運算子比較,如果外面的運算子優先權大於或等於頂端的運算子則推入,如果較小就彈出,直到遇到優先權較小者或堆疊為空時,就把外面這個運算子推入。 (6)中序式讀完後,如果運算子堆疊不是空,則將其內的運算子逐一彈出,輸出到前序式。 4-3 算術運算式的表示法 以下我們將練習把中序式(A+B)*D+E/(F+A*D)+C以堆疊法轉換成前序式。首先請右至左讀取字元,並將步驟繪出表格如下: 4-3 算術運算式的表示法 中序-後序(Infix-Postfix) (1).由左至右讀進中序運算式的每個字元(token)。 (2).如果讀進的字元為運算元,則直接輸出輸出到後序式中。 (3).如果遇到),則彈出堆疊內的運算子,直到彈出到一個(,兩者互相抵銷止。 (4). (的優先權在堆疊內比任何運算子都小,任何運算子都可壓過它,不過在堆疊外卻是優先權最高者。 (5)當運算子準備進入堆疊內時,並須和堆疊頂端的運算子比較,如果外面的運算子優先權大於頂端的運算子則推入,如果較小或等於就彈出,直到遇到優先權較小者或堆疊為空時,就把外面這個運算子推入。 (6)中序式讀完後,如果運算子堆疊不是空,則將其內的運算子逐一彈出,輸出到後序式。 4-3 算術運算式的表示法 以下我們將練習把中序式(A+B)*D+E/(F+A*D)+C以堆疊法轉換成後序式。首先請左至右讀取字元,並將步驟繪出表格如下: 4-3 算術運算式的表示法 範例 4.3.2 將下面的中序法轉成前序與後序算術式:(以下皆用堆疊法) A/B↑C+D*E-A*C 解答 中序轉前序 4-3 算術運算式的表示法 中序轉後序

文档评论(0)

niupai11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档