判断伫列是否是空的.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
判断伫列是否是空的

德明科技大學資訊科技系 佇列 Queue chapter 5 佇列 Queue 堆疊的定義 在一有序串列(ordered list)的兩端中,資料由一端新增,而由另一端刪除 先進先出 first in first out (FIFO) 佇列的運算 Add(或Enqueue) 由佇列的後端 (Rear ) 加入一個新項目 Delete(或Dequeue) 從佇列的前端 (Front ) 刪除一個項目 IsFull 斷佇列是否已滿,若已滿為 True,否則為False IsEmpty 判斷佇列是否為空,若空為 True,否則為False Add之演算法 Delete之演算法 佇列的應用 所有符合先進先出的資料特性,就有很大的機會以佇列應用 以陣列製作佇列 環型佇列 (Circular Queue) 佇列的問題 前端(front)尚有空位時,可能誤判佇列已滿 解決方法 使用環形佇列(circular queue) 使用鏈結串列處理 環型佇列 (Circular Queue) 使用一種Q[ 0: N-1]的一維陣列 Q[0]為Q[N-1]的下一個元素 最多使用(N-1)個空間 一般佇列與環狀佇列之比較 * p5-2 p5-3 p5-3 範例 假設有一個空的Queue實施下列的動作 Add A Add B Add C Delete Delete Add D 請呈現以上佇列運作的過程 p5-4 假設有一個空的Queue實施下列的動作 Add A Add B Add C Delete Delete Add D 請呈現以上佇列運作的過程 4.I/O的緩衝區(Buffer)上 5.Priority Queue 6.圖形的BFS廣度追蹤 1.作業系統的工作排程。 2.計算機的模擬程式。 3.磁碟管理的輸出入(input/output) 排序。 例如:作業系統的工作排程。 製作佇列最常用的方法就是使用一維陣列 產生佇列結構 ?宣告一個陣列結構 ?方法:Create(Queue) //建立一個空的Queue ?製作: ?陣列的記憶體配置(空的Queue) #define N 10 //定義佇列大小 char Queue[N]; //以陣列Queue當作佇列 int Front=-1; //設定頭端的索引值之初值為-1 int Rear=-1; //設定尾端的索引值之初值為-1 p5-8 將資料加入佇列(Add動作) ?將資料(item)加入到Queue中,成為Rear端元素 如果佇列已滿,則無法進行 ?方法:Add(item, Queue) ?製作: Procedure Add (item, Queue) begin if (Rear=N-1) Queue Is Full; //Queue已滿 else { Rear=Rear+1; Queue[Rear]=item; } end 刪除資料(Delete動作) ?刪除Queue的Front頭端元素 如果Queue是空,則無法進行 ?方法:Delete(item, Queue) ?製作: Procedure Delete(item, Queue) begin if (Front=Rear) Queue Is Empty; //Queue為空 else { Front=Front+1; item=Queue[Front]; } end 範例 假設有一個空的Queue,實施下列的動作: Add A到Queue Add B到Queue Add C到Queue 請呈現以上佇列運作之後的Front與Rear之值 假設接著 Delete 從Queue 判斷佇列是否已滿 ?判斷Queue是否已滿(亦即Rear是否等於N-1), 若是則傳回True,否則傳回False。 ?方法:IsFull(Queue) ?製作: Procedure IsFull (Queue) begin if (Rear=N-1) return True; //Queue已滿 else return False; //Queue尚未滿 end 【缺點】當Rear=N-1時,並不能保證Queue真的已滿 p5-10 判斷佇列是否是空的 ?判斷Queue是否是空(亦即Front=Rear) 若是則傳回True,否則傳回False ?方法:IsEmpty(Queue) ?製作: Procedure IsEmpty

文档评论(0)

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

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

1亿VIP精品文档

相关文档