资料结构简介.PPTVIP

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

* 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

文档评论(0)

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

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

1亿VIP精品文档

相关文档