Chap2 Stack & Queue.

Slides:



Advertisements
Similar presentations
資料結構與演算法 課程教學投影片.
Advertisements

電腦與問題解決 5-1 電腦解題概論 5-2 電腦解題程序 5-3 演算法概論.
南山中學 102學年度 性別平等教育週性別教育 性騷擾防治.
迷 宫 最短路径 施沈翔.
資料結構與C++程式設計進階 資料結構概論 講師:林業峻 CSIE, NTU 6/ 7, 2010.
第三章 堆疊與佇列的基本應用 3-1 簡介堆疊(Stack) 3-2 迷宮問題研究 3-3 佇列(queue)的介紹
第6章 佇列(Queues) 6-1 佇列的基礎 6-2 佇列的表示法 6-3 環狀佇列 6-4 雙佇列.
第6章 佇列(Queues) 6-1 佇列的基礎 6-2 佇列的表示法 6-3 環狀佇列 6-4 雙佇列.
資料結構 第3章 鏈結串列.
第 3 章 堆疊與佇列.
課程名稱:資料結構 授課老師:_____________
佇列 (Queue).
佇列與推疊 (Queue and Stack)
資料結構設計與C++程式應用 Fundamentals of Data Structures and Their Applications Using C++ 第3章 佇列 資料結構設計與C++程式應用.
資料結構簡介.
Chapter 3 堆疊與佇列 3.1 堆疊和佇列基本觀念 3.2 堆疊的加入與刪除 3.3 佇列的加入與刪除 3.4 其他型式的佇列
第三章 堆疊與佇列 Stacks & Queues
Chap 3 堆疊與佇列 Stack and Queue.
第8章 列舉器與集合 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或供拷貝.
Chapter 3 鏈結串列結構 資料結構導論 - C語言實作.
第十五章 Linked List, Stack and Queue
4 堆疊與佇列 4.1 前言 四種基本的資料結構 (可儲存資料的容器) 陣列 (Array)、串列(List): 最基本
cn/~dongeliu/dsa.html 刘 东 信息学院6系 中国科学技术大学
(Circular Linked Lists)
堆疊簡介 遞迴 佇列 算術運算式的表示法 中序轉換為前序或後序 前序與後序轉換成中序
堆疊 Stack chapter 4 德明科技大學資訊科技系.
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
第五章 堆疊 5-1 認識佇列 5-2 佇列的應用.
第三章 栈与队列 £3.1 栈 £3.3 队列 £3.2 栈的应用举例 £3.1.1 栈的定义 £3.1.2 栈的顺序存储结构
Chapter 3 堆疊與佇列 ( Stacks and Queues ).
第 六 章 鏈結串列(Link List) 課程名稱:資料結構 授課老師:________ 2019/1/2.
資料結構與C++程式設計進階 堆疊與佇列(Stack & Queue) 講師:林業峻 CSIE, NTU 6/ 21, 2010.
Ch03 鏈結串列結構 淡江大學 周清江.
Chapter 4 堆疊和佇列 資料結構導論 - C語言實作.
學習 2019/1/12. 學習 2019/1/12 Chapter 3 鏈結串列結構 資料結構導論 - C語言實作.
資料結構使用Java 第8章 佇列(Queue).
4.1 單向鏈結串列 4.2 堆疊的加入與刪除 4.3 佇列的加入與刪除 4.4 其他型式的佇列
Java 程式設計 講師:FrankLin.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Data Structure.
Chap3 Linked List 鏈結串列.
佇列(queue) Lai Ah Fur.
資料結構 第4章 堆疊.
第四章 堆疊與佇列 課前指引 資料結構學科中,堆疊(Stack)與佇列是兩種相當典型的抽象資料型態,也是一種有特定進出規則的線性串列應用,主要特性是限制了資料插入與刪除的位置和方法。本章中將會介紹堆疊與佇列的概念與特性,及在計算機領域的各種相關應用。
第 四 章 堆疊(Stack) 課程名稱:資料結構 授課老師:________ 2019/2/23.
資料結構 7-1 陣列 7-2 鏈結串列 7-3 堆疊和佇列 7-4 樹狀結構.
Chapter 4 資料結構.
Chapter 4 資料結構.
資料結構 優點 缺點 1 陣列 (Array) 沒有額外變量 (例head, next,...) 運作/操作較簡單 更新資料時,若要保持順序,需要移動較大量資料 靜態結構Static (宣告時已決定了陣列元素多少,不能在程式執行期間增減元素) 2 隊列Queue (FIFO) 容易更新 加入enqueue:
Chapter 3 堆疊與佇列 3.1 堆疊和佇列基本觀念 3.2 堆疊的機入與刪除 3.3 佇列的加入與刪除 3.4 環狀佇列
常宝宝 北京大学计算机科学与技术系 数据结构(三) 常宝宝 北京大学计算机科学与技术系
網路安全管理報告 緩衝區溢位攻擊 學生:吳忠祐 指導教授:梁明章.
Linked Lists Prof. Michael Tsai 2013/3/12.
緩衝區溢位攻擊 學生:A 羅以豪 教授:梁明章
挑戰C++程式語言 ──第8章 進一步談字元與字串
Chap2 Stack & Queue.
第四章 栈和队列 栈 ( Stack ) 队列 ( Queue ) 优先队列 (Priority Queue) 小结.
進階佇列.
資料結構使用Java 第6章 鏈結串列(Linked List).
陣列與結構.
資料結構使用Java 第7章 堆疊(Stack).
第4章 堆疊和佇列 資料結構設計與C++程式應用
期末報告第一題 通訊四甲 B 湯智瑋.
連結資料庫 MYSQL.
本教學投影片係屬教科書著作之延伸,亦受著作權法之保護。
第13章 電腦解題與演算法 13-4 資料結構.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
13-1 電腦可以協助解決哪些問題 13-2 電腦解題簡介 13-3 電腦解題規劃-演算法 13-4 認識資料結構
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Presentation transcript:

Chap2 Stack & Queue

Stack 堆疊(Stack) 採用後插入者先刪除(LIFO, Last In First Out)的規則 資料插入和刪除的動作只發生在堆疊的頂端(Top) Stack結構 自助餐廳裡餐盤由桌面往上一個一個疊放的方式就是一個

Stack基本運作 1. 產生堆疊結構 2.將資料放入堆疊(Push) 利用程式語言的宣告(Declaration)指令,將堆疊宣告成陣列(假設陣列之大小為  N  並且資料從第  0  個索引開始存放)或鏈結串列(Linked List) 結構。 2.將資料放入堆疊(Push) 更改  Top  指標後,將資料存入堆疊,但必須 先判斷堆疊是否已滿(使用陣列時) 。

Stack基本運作 3.刪除資料(Pop): 4.判斷堆疊是否滿溢: 5.判斷堆疊是否是空的: 若堆疊不是空的,則將頂端資料取出,並更改  Top  指標值。 4.判斷堆疊是否滿溢: 判斷  Top  指標是否等於  N ━  1?(使用陣列時)。 5.判斷堆疊是否是空的: Top  值小於  0  (陣列) 或  Top  指向 NULL (鏈結串列)。

Stack的應用 副程式的呼叫(Subroutine Call) 用Stack儲存Return Address(即呼叫副程式的下一行指令的位址) 將算式運算式從中序表示式(infix)轉換為後序(postfix)或前序(prefix)表示式 A*B/C (infix)  AB*C/ (postfix)

Queue 佇列(Queue) 採先插入者先刪除(FIFO , First In First Out)規則 資料的插入刪除分別發生在佇列的兩端, 插入的一端稱為尾端(Rear) 刪除的一端稱為前(首)端(Front) 常見的佇列 搭公車時大排長龍準備上車時 買票的人隊伍 高速公路收費站前大排長龍等待繳費的車陣

Queue 佇列的表示法 陣列是屬於循序配置(Sequential Allocation) 鏈結串列則是屬於動態配置( Dynamic Allocation)

Queue基本運作 1.產生佇列結構: 2.將資料加入佇列: 3.從佇列刪除一個元素: 宣告一個陣列結構或鏈結串列結構,並設定成空佇列,即Front = Rear = -1  或  Front = Rear = NULL(=0)。 2.將資料加入佇列: 若佇列未滿溢,則改變Rear指標後將資料存入佇列之Rear位置。 3.從佇列刪除一個元素: 若非空佇列,則改變 Front 指標後將  Front  所指到之佇列元素刪除。

Queue基本運作 4.判斷佇列是否滿溢: 5.判斷是否為空佇列: 當  Rear = N-1 時,表示佇列滿溢(Overflow)。(假設陣列之大小為 N ,並且資料從第 0 個索引開始存放) 5.判斷是否為空佇列: 當  Front = Rear 時,為空佇列。

3種常見的變形佇列 環狀佇列(Circular Queue) 優先佇列(Priority Queue) 每一個佇列中的元素,我們都賦予一個代表優先權的數字,最大的數字就有最高的優先權。 應用 CPU 的工作排程(Job Schedule, Task Schedule) 作為輸出入工作緩衝區: SPOOLING,是先將輸入資料寫在磁碟上,再輸入電腦處理,處理 後的資料先寫在磁碟上,再由印表機印出。 用於電腦模擬(Computer  Simulation)方面 在模擬中經常有時間導向(time - driven)或事件導向(event - driven)的輸入訊號,由於訊號到達的時間不一定,也是用佇列來安排。 雙向佇列(Double  Ended  Queue)