- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
资料结构简介
* 4.4 佇列 c b a 入口 出口 尾端(rear) 頭端(front) c b 出口 尾端(rear) 頭端(front) 入口 d c b 尾端(rear) 頭端(front) 入口 特徵: 刪除 新增 d * 4.4.1 以陣列實作佇列 * * 4.4.1 以陣列實作佇列—移動門 (ch4_queue_1.java) 優點:簡單 缺點:還有空位卻認為已滿 解決方法:當有 remove 動作時,搬移資料,讓剩下的所有佇列資料都由陣列索引位置 0 開始 或參考 4.5.5 環狀 佇列 適用於限量服務,不適合不限量、但座位有限的服務 * 4.4.2以串列實作佇列(ch4_queue_2.java) class Node { int data; Node link; } class Queue { Node front; Node rear; } * 4.4.2以串列實作佇列(ch4_queue_2.java) 範例 ch4_queue_2.java 未處理 * 4.4.2以串列實作佇列(ch4_queue_2.java) 基本動作如下: 建立一個 空佇列:生成 front 跟 rear 節點,而且兩者的 link 都是 null void add(int data): 生成新節點,將 data 值存在此節點,依佇列是否為空,分別處理(第 4 頁投影片) int remove( ): 刪除並傳回佇列頭端資料 int getfront( ): 傳回頭端資料 int getrear( ): 傳回尾端資料 boolean empty( ): 傳回佇列是否為空之布林值 練習: int getlength():傳回長度 如果想以串列實作,但又要限制佇列長度(最多為 n),則可以檢查 getlength() 是否等於 n ,來判斷是否佇列已滿 * * 4.5 變形堆疊和變形佇列 4.5.1, 4.5.2 多重堆疊,多重佇列 [課本這兩節跳過] 課本:將一陣列切成 3 段,每段實作一堆疊(佇列),當某一堆疊(佇列)滿了,其他堆疊(佇列)還有空間時,需重新分配,處理起來太複雜。其實可以用之前設計之 Stack 或 Queue 來實作。 重新設計: class ThreeStack { Stack s1; Stack s2; Stack s3; int s1_max_size; //optional int s2_max_size; //optional int s3_max_size; //optional void push(int i, int data) int pop(int i) boolean full(int i) boolean empty(int i) } class ThreeQueue { Queue q1; Queue q2; Queue q3; int q1_max_size; //optional int q2_max_size; //optional int q3_max_size; //optional void add(int i, int data) int remove(int i) boolan full(int i) boolean empty(int i) } 如果對堆疊容量有設限 4.5.1, 4.5.2 多重堆疊,多重佇列(重新設計,補充) 其方法 (以多重堆疊為例:ch4_threestack.java) 建構子: 初始化 3 個堆疊 void push(int i, int data): 新增資料 data 到第 i 個堆疊 int pop(int i): 由第 i 個堆疊取出資料(要移除) boolean full(int i): 檢查第 i 個堆疊是否滿了 (對堆疊容量有設限時才需要) boolean empty(int i):檢查第 i 個堆疊是否為空 也可擴充為可變長度之多重堆疊 (ch4_MultiStack.java) 建構子:以整數陣列代表需要新增的堆疊的各個長度限制 * * 4.5.3 優先佇列 課本作法 1:將一陣列切成 3 段,每段實作一佇列,由左到右分級 課本作法 2:以鍊結串列 * 4.5.3 優先佇列 (補充) 重新設計: 視為一個佇列,由 3 個佇列實作,新增時可設定要加入第幾個佇列。移除時會由 q1, q2, q3 依續移除 class P
您可能关注的文档
- 课程编号: 北京理工大学2000-2001学年第二学期.DOC
- 课时作业3 蒸馏、萃取和分液 - 南昌一中.DOC
- 课题四汽车空调温度自控系统.PPT
- 课题申报指南 - 北京大学科学研究部.DOC
- 课程特色 全新资讯服务概念 云端运算技术+乙级证照+工研院证书 参 .DOC
- 课题:随机模拟(蒙特卡洛)方法 - TI Education - Texas Instruments.PDF
- 调幅收音机讲座稿 - 青少年《电子通》.DOC
- 调控子和矿因子的级联式调控 - 生物化学与生物物理进展.PDF
- 课题序号 07 授课班级 12机电一体化技术2 授课课时 2 授课形式 教学 .DOC
- 课题二智力竞赛抢答器逻辑电路设计.DOC
文档评论(0)