依序输出堆叠中的运算子直到取出.PPTVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
依序输出堆叠中的运算子直到取出

德明科技大學資訊科技系 堆疊 Stack chapter 4 堆疊 Stack 堆疊的定義 在一有序串列(ordered list)中,資料的新增與刪除都由同一端進行 後進先出 last in first out (LIFO) 堆疊主要的動作 Push:將新項目加在堆疊的頂端 輸入新資料進入堆疊 Pop:從堆疊頂端拿走一個項目 由堆疊輸出一個資料 TopItem:讀出堆疊頂端的項目 只是讀取,資料項目並不會減少 IsEmpty:看堆疊是否為空 空則傳回true,不空則傳回false。 IsFull:看堆疊是否已滿 滿則傳回true,未滿則傳回false Push 與 Pop Push Pop 堆疊的應用 符合後進先出(LIFO)需求的特性 副程式(函數)呼叫的變數處理 每次呼叫副程式時,將現在的變數資訊放入系統的stack內 可以處理巢狀的函數呼叫,但是變數仍不會混亂 函數呼叫、遞迴呼叫、中斷處理、巨集呼叫等 運算式的轉換與求值 圖形的深度優先搜尋 資料反序輸出(例如: abc - cba) 函數呼叫處理 函數呼叫 函數呼叫 以陣列來製作堆疊 運算式的表示法 中序式→前序式 中序式→後序式 中序運算式的計算 舉例: 中序運算式為 A+B*C-D 舉例: 中序運算式為 A+B*C-D 舉例: 中序運算式為 A+B*C-D 中序表示法轉換成前序表示法 堆疊處理法 由右而左掃描資料,依據資料是運算元或運算子作不同的處理;運算子還要考慮其優先次序 中序轉換成前序 範例:A+B*(C-D) 、由右而左讀取 範例:A+B*(C-D) 、由右而左讀取 範例:A+B*(C-D) 、由右而左讀取 中序表示法轉換成後序表示法 堆疊處理法 由左而右掃描資料,依據資料是運算元或運算子作不同的處理,運算子還要考慮其優先次序 中序轉換成後序 範例:A+B*(C-D) 、由左而右讀取 範例:A+B*(C-D) 、由左而右讀取 範例:A+B*(C-D) 、由左而右讀取 前序表示法轉換成中序表示法 堆疊處理法 前序轉換成中序 前序式+A*B-CD ,轉換成中序式 後序表示法轉換成中序表示法 堆疊處理法 後序轉換成中序 後序式ABCD-*+ ,轉換成中序式 (5) 讀取:‘(’ push放入stack頂端 (6) 讀取:’C’ 輸出:C 目前輸出的字串:ABC (7) 讀取:‘-’ push放入stack頂端 註:中序轉成後序時,左括號在堆疊中的優先順序最小 (8) 讀取:’D’ 輸出:D 目前輸出的字串:ABCD (9) 讀取:‘ ) ’ 依序輸出(POP)堆疊中的運算子, 直到取出 “ ( ”為止 輸出:- 目前輸出的字串:ABCD- (註:左右括號不會輸出顯示) (10)輸出剩餘的Stack中的資料(運算式已經讀取完成, 而堆疊中尚有運算子時, 依序由頂端輸出) 輸出:*+ 最後輸出的字串:ABCD-*+ 1.由右至左依序取得資料di 2.如果di是運算元,則放入堆疊中。 3.如果di是運算子,則從堆疊中取出兩個運算元,依照中序式的方式 (運算元2運算子運算元1)後,再將結果放入堆疊中 p4-36 * p4-2 p4-3 p4-4 [4] Top= -1 [2] [3] [0] [1] Top= 0 A Push(A) Top= 1 A Push(B) B Top= 2 A Push(C) B C Top= 3 A Push(D) B C D Top= 4 A Push(E) B C D Top= 4 Push失敗 A Push(F) B C D E E [4] Top= 1 [2] [3] [0] [1] Top= 0 A Pop( ) Top= -1 A Pop( ) B Top= -1 Pop失敗 Pop( ) p4-5 1. main() 2.{ 3. int i, j ; 4. printf(“main before calling f1\n”); 5. f1(); 6. printf(“main returns from f1\n”); 7. } 1.void f1() { 3. int m, n ; 4. m = 2 ; 5. printf(“f1 before

您可能关注的文档

文档评论(0)

zhaoxiaoj + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档