資料結構使用Java 第8章 佇列(Queue).

Slides:



Advertisements
Similar presentations
我的未来不是梦 攀枝花市经贸旅游学校. 1. 文中案例王萍苦恼的原因是 什么? 2. 你有哪些办法可以帮助王萍? 导入 思考  谁来帮帮她?
Advertisements

資料結構與演算法 課程教學投影片.
迷 宫 最短路径 施沈翔.
計算機程式語言實習課.
C语言程序设计 李伟光.
教學經驗分享 吳毅成 國立交通大學資訊工程系 2012年4月.
读万卷书 行万里路 郝慧芳 2014年6月8日.
First Priority Consulting
就业手续 2015届毕业生 就业手续、党组织关系 办理说明会 1 食院分党委 王静 刘海华 二零一五年五月二十一日.
資料結構與C++程式設計進階 資料結構概論 講師:林業峻 CSIE, NTU 6/ 7, 2010.
科學科 污染 空氣 成因 的 : 題目 及 減少空氣污染的方法 陳玉玲 (4) 姓名 : 去到目錄.
第三章 堆疊與佇列的基本應用 3-1 簡介堆疊(Stack) 3-2 迷宮問題研究 3-3 佇列(queue)的介紹
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
第6章 佇列(Queues) 6-1 佇列的基礎 6-2 佇列的表示法 6-3 環狀佇列 6-4 雙佇列.
第6章 佇列(Queues) 6-1 佇列的基礎 6-2 佇列的表示法 6-3 環狀佇列 6-4 雙佇列.
資料結構 第3章 鏈結串列.
第 3 章 堆疊與佇列.
LINQ 建國科技大學 資管系 饒瑞佶.
課程名稱:資料結構 授課老師:_____________
佇列 (Queue).
佇列與推疊 (Queue and Stack)
資料結構設計與C++程式應用 Fundamentals of Data Structures and Their Applications Using C++ 第3章 佇列 資料結構設計與C++程式應用.
資料結構簡介.
4.4 佇列 特徵: c b a c b d c b 新增 d 刪除 入口 入口 入口 尾端(rear) 尾端(rear) 尾端(rear)
資料結構 第5章 佇列.
Chap 3 堆疊與佇列 Stack and Queue.
第8章 列舉器與集合 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或供拷貝.
JAVA 程式設計與資料結構 第六章 輸出與輸入.
Ch13 集合與泛型 物件導向程式設計(2).
串列(List) 撰寫一串列程式.
第十五章 Linked List, Stack and Queue
類別(class) 類別class與物件object.
王豐緒 銘傳大學資訊工程學系 問題:JAVA 物件檔輸出入.
第五章 堆疊 5-1 認識佇列 5-2 佇列的應用.
Echo Server/Client Speaker:Fang.
Chapter 4 堆疊和佇列 資料結構導論 - C語言實作.
Java 程式設計 講師:FrankLin.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Data Structure.
Chap3 Linked List 鏈結串列.
佇列(queue) Lai Ah Fur.
集合框架和泛型(一).
Topic Introduction—RMI
資料結構 優點 缺點 1 陣列 (Array) 沒有額外變量 (例head, next,...) 運作/操作較簡單 更新資料時,若要保持順序,需要移動較大量資料 靜態結構Static (宣告時已決定了陣列元素多少,不能在程式執行期間增減元素) 2 隊列Queue (FIFO) 容易更新 加入enqueue:
第五章 介面/集合/泛型 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或供拷貝.
Linked Lists Prof. Michael Tsai 2013/3/12.
挑戰C++程式語言 ──第8章 進一步談字元與字串
Chap2 Stack & Queue.
第四章 栈和队列 栈 ( Stack ) 队列 ( Queue ) 优先队列 (Priority Queue) 小结.
進階佇列.
GridView.
GridView操作 (II).
如何使用Gene Ontology 網址:
Chap2 Stack & Queue.
计算机问题求解 – 论题1-5 - 数据与数据结构 2018年10月16日.
資料結構使用Java 第6章 鏈結串列(Linked List).
陣列與結構.
資料結構使用Java 第7章 堆疊(Stack).
第4章 堆疊和佇列 資料結構設計與C++程式應用
動畫演示 Node規範了一些基本的方法,像是增加節點、刪除節點、讓節點做一些事、取得第n個節點等等
方格紙上畫正方形.
資料結構使用Java 第5章 串列程式實作.
Data Structure.
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
SQLite資料庫 靜宜大學資管系 楊子青.
Chapter 4 Multi-Threads (多執行緒).
6 集合类与泛型.
Unix指令4-文字編輯與程式撰寫.
第六章 直接成本法.
InputStreamReader Console Scanner
Presentation transcript:

資料結構使用Java 第8章 佇列(Queue)

課程內容 佇列(Queue)的基本結構 佇列(Queue)的特性 佇列(Queue)的操作 佇列延伸的結構 佇列的應用 add, offer, remove, poll, element, peek 佇列延伸的結構 佇列的應用

佇列的基本結構 佇列的兩端都有開口。 元素可以從佇列的前端(front)離開,從佇列的後 端(rear)加入。

佇列的特性 「先進先出」(FIFO, First-In-First-Out)的模式 佇列並沒有像陣列一樣提供任何位置的元素隨機 存取使用的特性。

佇列的特性 先加入者在前、後加入者在後。 連續的元素之間不能留下空位 假如佇列滿了就無法再加入元素。

佇列的特性 移除元素必須從佇列中最先加入(位於最前端)的 元素開始移除。 一旦裡面清空了便無法再取出元素。

實作Queue 使用Java Collections Framework中的Queue類別 實作。 Queue在Java API架構中的位置: import java.util.*; 宣告Linked List物件 Queue<DT> 物件名 = new LinkedList<DT> (); Queue<String> que = new LinkedList<String>(); Queue為抽象概念無法實體化(instance),所以採 用LinkedList來實作。

Queue的操作 Throws exception Returns special value Insert add(e) offer(e) Remove remove() poll() Examine element() peek() 程式執行 停止 繼續執行

加入(add), 提供(offer) 即是新增元素,這是將元素加入佇列的唯一方法; 假如佇列不是滿的,就把元素從後方放入佇列。 例如:que.add(“first”); 若que已滿,則產生例外(Exception)。 例如:que.offer(“second”); 若que已滿,則回傳false值。 Throws exception Returns special value Insert add(e) offer(e) Remove remove() poll() Examine element() peek()

移除(remove), 獲得(poll) 即是刪除元素,並取得該元素的內容; 假如佇列不是空的,就把目前位於最前端的元素 移出佇列,同時探知該元素是什麼內容。 程式碼:物件名.remove(); 例如:que.remove(); 若que已空,則發生例外(Exception)。 例如:que.poll(); 若que已空,則回傳null值。 Throws exception Returns special value Insert add(e) offer(e) Remove remove() poll() Examine element() peek()

元素(element), 查看(peek) 即是讀取元素。 此動作不新增新元素,也不刪除現有元素。 程式碼:物件名.element(); 例如:que.element(); 若que已空,則發生例外(Exception)。 例如:que.peek(); 若que已空,則回傳null值。 Throws exception Returns special value Insert add(e) offer(e) Remove remove() poll() Examine element() peek()

取得Queue中的所有元素 判斷Queue是否為空 若不為空則移除元素 重複步驟直到Queue為空 String value; While((value=que.poll())!=null) System.out.println(value);

佇列延伸的結構 循環佇列(circular queue) 最多只能容納MaxQueueSize-1個元素。(因為 front所指的位置必須是空的。) 優點:front與rear的值不會一直增大。

佇列延伸的結構 雙向佇列(deque) 可以讓兩個queue同時在一塊空間裡成長。 若QRearA = QRearB,則代表空間已滿。

佇列的應用 : CPU的排程問題

優先佇列(priority queue)的觀念 優先佇列需要快速找到最高優先順序的元素 常用Heap的方法來協助。(後面章節再介紹)

佇列的應用 : 正反唸都一樣的字串 正反唸都一樣的字串,英文叫做Palindrome。 短字串容易判斷。長字串則用電腦判斷較快速。