- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 关于安排2008年度社会工作者职业水平考试考务-陕西人事考试网.doc
- 关于开展2011年卫星导航定位科学技术奖推荐评选工作的通知-NavInfo.doc
- 关于教学设计的理论(新).-常州市教育科学研究院.ppt
- 关于小微企业所得税优惠政策的有关问题-青岛市国家税务局.ppt
- 关于服务公司采购LED显示屏的报告.doc
- 关于组织申报国家2010年度电子信息产业发展基金项目.doc
- 关于申报山东省科技进步奖推荐公示-威海市科技局.doc
- 关于浙江工商大学xx年大学生xx竞赛.doc
- 关于组织编写和修订教学大纲、课程简介的通知-遵义医学院医学影像.doc
- 关于认真做好十一五-南京航空航天大学教务处.doc
文档评论(0)