Microsoft Word - DataStruct-981.doc

Similar documents
Microsoft PowerPoint - Fig03_Stack.ppt [相容模式]

1

1

Microsoft Word - F7801B_ch04習題解答.doc

Microsoft PowerPoint - ds2.ppt

Microsoft Word - AEE CH03.doc

Data Structures:

Microsoft PowerPoint - queue.ppt

PowerPoint Presentation

NethersoleJO89(8).indd

untitled

Microsoft PowerPoint - DS&Algorithm [相容模式]

Microsoft PowerPoint - 資料結構總複習

Microsoft Word - data_mid1611_and_sol.docx

菩提道次第廣論

路 上 沒 說 話, 車 子 被 爸 離 去 後 開 走 了, 沒 什 麼 變, 除 了 一 股 淡 淡 的 香 味, 我 不 太 習 慣, 像 空 氣 中 的 粉 塵, 左 飄 右 飄, 光 中 飛 舞 我 沒 提, 看 車 窗 外, 外 面 不 太 有 趣, 我 只 是 沒 事 幹, 我 們 本

繁 華 國 小 101 學 年 母 親 節 感 恩 惜 福 - 跳 蚤 市 場 暨 科 學 闖 關 遊 戲 親 子 活 動 實 施 計 畫 一 依 據 : 本 校 101 學 年 度 校 務 計 畫 及 行 事 曆 二 目 的 : 1. 培 養 學 生 感 恩 惜 物 知 福 惜 福 的 節 儉 觀

台 中 市 北 屯 區 東 山 里 橫 坑 9 林 志 明 巷 89-5 菜 豆 菜 大 漿 果 菜 豆 菜 大 漿 果 小 漿 果 核 果 柑 桔 無 陳 錦 生 新 竹 市 香 山 區


育儿小故事(四)

stack_and_queue

#$%# & (! )! *! +! +! &! +!! * &! * )!! +, )! + &)!) $! )!+ *! +. &) #!/ #! #$$% & #$$ & #0#1! ) * # #$$( &! ) * +,!

PowerPoint Presentation

Chapter 16 集合

Microsoft Word 軟體設計第二部份範例試題_C++_ _1_.doc

Stack, queue, 運算式解析 二元樹與走訪 圖的 DFS 與 BFS 拓撲排序演算法 尤拉迴路 Uva 514, 樹狀結構 Day5: 資料結構基礎 07/12 樹 (tree) 是一種特殊的資料結構, 它可以用來描述有分支的結構, 是由一個或一個以上的節點所組成的有限集合,

運算子多載 Operator Overloading

! "#$! " # $%%&#! ()*+, - %& - %.,/ - /!! ! " ! #0 $ % &0 123.! 4(5 $%%& %3 &$!!!!!!!!!!!!!!! % % - /&%.&.33!!! &! 3%% - 3 % -

! " # $ % & (( %) "*+,- &.(/-) & ( 0 & 1! % " % # % & & $ % "/()%!"# (( (02-03 /(((.1/.2( 4 //). /$0 3)0%. /1/%-2 (( ) / ((0 // "*+,- &.(/-) & ( 0 & 1

PowerPoint Presentation

《哈佛考考你·智力》

Explain each of the following terms. (12%) (a) O(n 2 ) (b) protected in C++ language (c) sparse matrix 7. Write


) ) ) )-. ) ) / )-. )-. )-. -. : -/ -0 0/.. ; -.0 : 0 ).- ; 0 ).=? 2 2 ) / / ) - ; ) ; )/ :.0/10)/ / 34 ; )/ 10. ; / 0 )

Queue & stack

Microsoft PowerPoint - 11_Templates.ppt

Microsoft Word - 目次範例-catalog doc

<A4E2BEF7B4FAB8D5B3F8A F52322E786C7378>

PowerPoint Presentation

Microsoft PowerPoint - 4.pptx

使 用 一 般 佇 列 存 放 資 料 時, 當 前 端 (Front) 尚 有 空 位 時, 再 加 入 元 素, 卻 發 現 此 佇 列 已 滿, 請 問 此 時 使 用 下 列 那 一 個 方 法 較 佳? (A) 優 先 佇 列 (B) 環 形 佇 列 (C) 雙 向 佇 列

演算法導入、ソート、データ構造、ハッシュ

育儿知识100问(二)

营 业, 因 业 务 往 来 关 系, 与 宜 宾 大 小 商 帮 比 较 熟 悉 曹 九 龄 熊 郁 村 便 约 我 参 加 共 同 发 起 熊 曹 二 人 与 我 又 是 世 交, 在 实 业 救 国 思 想 激 励 下, 同 时 也 为 个 人 将 来 发 展 前 途 计, 我 也 欣 然 乐

(Microsoft PowerPoint - \270\352\256\306\265\262\272c\302\262\263\370.ppt)

資料結構與演算法複習試題(出自:全國資訊競賽89, 91、IOI 2002, 2003)

3-2 連比例 連比的運算性質 a b c 0 a b c (a m) (b m) (c m

说 : 荀 子 极 偏 驳, 只 一 句 性 恶, 大 本 已 失 5 朱 熹 说 : 荀 扬 不 惟 说 性 不 是, 从 头 到 底 皆 不 识 6 采 取 的 都 是 这 种 理 论 框 架 另 一 种 理 论 框 架 始 于 20 世 纪 前 期, 这 便 是 诸 子 学 研 究 的 框 架

ebook39-6

佛教招〔2016〕9号--佛山市教育局关于调整面向全市招收艺术特长生音乐专业考试内容及大纲的通知.doc

!"# $%& %!"# $%& %!"#$%& %! ( )***%% ) $)! +**+),,* -)+.* )( ) +, +*.*)+..**! )$,*)+$))$!"!#

9202reply-s.doc

Microsoft PowerPoint - C-Ch10.ppt

年 第 6 期 总 第 322 期 一 寻 找 博 尔 赫 斯 向 中 心 汇 聚 过 来 的 街 道, 五 条 街 道, 六 条 街 道, 我 在 水 中 央 仿 佛 一 朵 莲 花 盛 开, 有 千 万 片 花 瓣 在 摇 曳 舒 展 不 知 道 该 往 哪 个 方 向 走 布

量 來 調 節 體 溫 隨 年 齡 老 化, 真 皮 層 之 厚 度 約 減 少 20%, 其 中 的 血 管 汗 腺 與 神 經 末 梢 的 數 量 也 隨 之 減 少, 造 成 老 人 的 體 溫 調 節 功 能 降 低 發 炎 反 應 減 慢 對 觸 覺 與 痛 覺 感 降 低 提 供 皮 膚

导言

《拍案惊奇》(中)

全國新住民火炬計畫(草案)

(Microsoft Word - 1_\252\354\244p\257S\300u_\254\374\304R\252\272\254K\244\321.doc)

untitled

电邮.FIT)

資料結構之C語言重點複習

!##$!% "&! %( $#!##)!& $!##*!##*! "

<4D F736F F D20BAC3C2E8C2E8CAA4B9FDBAC3C0CFCAA6322E646F63>

专 业 高 分 子 化 学 高 分 子 化 学 ( 第 三 版 ), 潘 祖 仁, 化 学 工 业 出 版 社 综 药 物 化 学 综 药 物 化 学 ( 第 六 版 ), 郑 虎 主 编, 人 民 卫 生 出 版 社 化 工 综 参 见 化 工 原

Microsoft PowerPoint - 04-array_pointer.ppt

Microsoft PowerPoint - lecture4

國語 領域計畫表

ebook39-5

Java 程式設計入門

用 照 片 說 故 事 舊 區 有 舊 區 的 故 事, 它 沒 有 高 聳 入 雲 的 大 廈, 沒 有 縱 橫 交 錯 的 天 橋 沒 有 五 彩 繽 紛 的 商 場, 更 沒 有 林 林 總 總 的 名 牌, 有 的 只 是 差 點 被 人 遺 忘 的 東 西 又 一 城 時 代 廣 場 IF

桃園縣中小學98年度教師創意教學獎工作坊

Linked Lists

zt

<4D F736F F D203938BEC7ACECBCD2C0C0B8D5A8F7AEE6A6A1C0C92DB57BA6A1B35DAD705FA6B3B8D1B5AA5F2E646F63>

Microsoft PowerPoint - chapter6.ppt

國立勤益科技大學 101 學年度研究所碩士班招生筆試試題卷所別 : 工業工程與管理系組別 : 資訊系統組科目 : 計算機概論准考證號碼 : ( 考生自填 ) 考生注意事項 : 一 考試時間 100 分鐘 選擇題 :<20 題, 每題 5 分, 共 100 分 > 1. CPU 的速度為 5 MIPS

( )... 5 ( ) ( )

senior_article_2010.pdf

Ps22Pdf

Microsoft Word - 2.doc


<4D F736F F D20B3E6B4B9A4F930365F32A443AC71C5E3A5DCBEB9B1B1A8EE2E646F63>

!"#$ % & ())*$ $ +,-./0)1)1/.21/.$ 3 4$ 5 4$ 6 789:;9< $ = :; A B CD ())* E )FG(*? H$ $ $ $ $ $ $ $ $ $ % IJ!"#% &$ KLMNO 2(* H 2G))(2 $ PQ R

Workbook_Chinese copy.pdf

一、

Microsoft Word 定址法實驗.doc

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

(Microsoft Word - \262\304293\246\ doc)

<4D F736F F D20CBD5D6DDBFC6BCBCD1A7D4BACCECC6BDD1A7D4BA C4EAB1BEBFC6D5D0C9FAD7A8D2B5BDE9C9DC2E646F63>

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

PowerPoint Presentation

(Microsoft Word -

全国计算机技术与软件专业技术资格(水平)考试

2. 下 列 理 解 和 分 析, 不 符 合 原 文 意 思 的 一 项 是 ( ) A. 水 手 在 伦 敦 讲 东 印 度 群 岛 的 所 见 所 闻, 匠 人 在 火 炉 边 讲 自 己 的 人 生 经 历, 他 们 讲 的 故 事 各 有 特 点, 但 同 属 于 传 统 故 事 模 式

十 四 本 院 司 法 及 獄 政 委 員 會 第 5 屆 第 20 次 會 議 紀 錄 34 十 五 本 院 司 法 及 獄 政 財 政 及 經 濟 委 員 會 第 5 屆 第 12 次 聯 席 會 議 紀 錄 37 十 六 本 院 司 法 及 獄 政 教 育 及 文 化 委 員 會 第 5 屆

Ps22Pdf

Ps22Pdf

Microsoft Word - 2

! $%%& $%%#! " $%%# $%%& $%%& $%%# $%%& $%%#! "##$%%

Transcription:

4. 堆疊與佇列 (Stack and Queue) 4. Stak (). 基本觀念 定義 : 當將東西疊成一堆, 而取用的時候由上方來取出 特性 : 先進後出, 後進先出 ( 號球先放, 但 3 號球會先拿出 ) 2 3 3 2 (2). Stack 的運算 基本運算 push: 將資料放入堆疊 pop: 將資料由堆疊最頂端取出一個 TopItem: 位於堆疊中最上面的一個資料 IsEmpty: 用來檢查目前堆疊是否為空 IsFull: 用來檢查目前堆疊是否已經滿了 push IsFull pop Stack 的實作 : 堆疊的宣告 int Item[5]; IsEmpty // 宣告一個堆疊共有 5 個位置 TopItem 37

放入資料 push(); push(); push(c); 取出資料 x = pop(); // C x2 = pop(); // 放入資料 push(d); 範例 : 執行下面指令後, 請填入堆疊的狀態 int Item[3]; () push(); (2) push(); (3) push(c); (4) push(d); (5) x = pop(); (6) x2 = pop(); (7) x3 = pop(); (8) x4 = pop(); (9) push(e); (0) x5 = pop(); () push(f); (2) push(g); 38

X = X2 = X3 = X4 = X5 = ns: X = C X2 = X3 = X4 = 0 X5 = E () (2) (3) (4) C C (5) (6) (7) (8) (9) (0) () (2) G E F F 範例 : 用鏈結串列實作堆疊原始的堆疊為 50,2,0 執行 push(2) 的指令 執行 pop() 的指令 x 50 2 2 () 將 2 的鏈結指向 50 x 50 2 () 將原來指向 50 的鏈結改成指向 2 0 0 39

(3). 利用 Link list 實作 Stack 優點 不受堆疊長度的限制 ( 除非記憶體不足 ) 可以動態的加入堆疊的元素 缺點 必需多一個儲存指標的欄位 實作上較為複雜 4.2 Stack 的應用 (). 主要的應用方向 副程式的呼叫與返回 運算式的轉換及求值 遞迴 (2). 副程式的呼叫與返回 基本觀念 範例主程式執行並呼叫兩個副程式, 請寫出執行下面步驟後的 返回位址堆疊 的內容? 開始 結束 主程式 0000 0002 0004 0006 0008 000 () 呼叫副程式 (4) 返回 副程式 000 002 004 006 008 (2) 呼叫副程式 2 (3) 返回 副程式 2 0200 0202 0204 0206 () (2) (3) (4) 執行上面各步驟後返回位址堆疊的內容 2 0 0002 2 006 0 0002 2 0 0002 2 0 (3). 運算式的轉換及求值 基本觀念 X = + * C ( D + E / F ) 運算式 : 等號的右邊稱為運算式運算子 (Operator) : +, -, *, / 40

運算元 (Operand) :,, C, D, E, F 運算子的優先順序 : (,) *, /, % +, - >, <, <=, >= &&, = 運算式的表示法 : 中序式 (infix): + 後序式 (postfix): + 前序式 (prefix): + 中序式轉成後序表示法的步驟 : +*C 將相關的運算元用括號括起來 ( + ( * C ) ) 找到他右邊最接近的右括號, 並加上箭號 ( + ( * C ) ) 將運算子移到右括號的位置 C * + 範例 ( 將下面的中序式轉成後序式 ) (+) * C D / E 答 : (((+) * C) (D/E)) (( + * C) D E/ ) ( + C* - D E/ ) + C* D E/ - 範例 ( 將下面的中序式轉成後序式 ) + (/C - D) * E F/G 答 : (( + (((/C) - D) * E)) (F/G)) (( + ((C/ - D) * E)) FG/ ) (( + (C/ D - * E)) FG/ ) (( + C/ D - E * ) FG/ ) ( C/ D - E * + FG/ ) C/ D - E * + FG/ - 範例 ( 將下面的中序式轉成後序式 ) (+) * (C D) / E 答 : (((+) * (C D)) / E ) ((+ * CD-) / E ) (+ CD- * / E ) + CD- * E / 範例 ( 將下面的中序式轉成後序式 ) + *C - (E + F) 4

答 : (( + (*C)) - (E + F)) (( + C*) - E F+) ( C*+ - E F+) C*+ E F+ - 範例 : 計算下面的後序式的值 =5, =6, C=2, D=3, E=2, F=9, G=3 +CD- * E / = ()CD- * E / = ()(-) * E / = (-) E / = -5.5 範例 : 計算下面的後序式的值 =5, =6, C=2, D=3, E=2, F=9, G=3 C*+ E F+ - = (2) + E F + - = (7) E F + - = (7) () = 6 範例 : 計算下面的後序式的值 =5, =6, C=2, D=3, E=2, F=9, G=3 + C* D E/ - = () C * D E / - = (22) D E / - = (22) (.5) = 20.5 範例 : 計算下面的後序式的值 =5, =6, C=2, D=3, E=2, F=9, G=3 C/ D - E * + FG/ - = (3) D - E * + F G / - = (0) E * + F G / - = (0) + F G / - = (5) F G / - = (5) (3) = 2 範例使用堆疊法將下面中序轉後序式 (+) * C D / E 次序運算式運算子堆疊 ( 底 頂 ) 輸出的後序式 ( ( 2 ( 3 + (+ 4 (+ 5 ) + 42

6 * * + 7 C * +C 8 - - +C* 9 D - +C*D 0 / -/ +C*D E 4.3 Queue (). 基本觀念 定義 : 將東西排成一列, 先到的先處理 特性 : 先進先出, 後進後出 Queue 運算 EnQueue: 將資料放入佇列 DeQueue: 將資料由佇列的前端取出一個 IsEmpty: 用來檢查目前佇列是否為空 IsFull: 用來檢查目前佇列是否已經滿了 Queue 宣告 typredef struct tagqueue { 43

char item[mx_item]; // 假設 MX_ITEM = 7; int front; // 下次將取出資料的地方 int rear; // 本次已加入資料的地方 } QUEUE; Queue 使用 QUEUE q; q.front = -; q.rear = -; 加入資料 : rear 加, 將新項目加入到 item[rear] 中 取出資料 : front 加, 讀出 item[front] 中的資料 Queue 加入資料 q.enqueue(); // 加入 rear = 0, front = - Item[3] Item[4] Item[5] Item[6] q.enqueue(); // 加入 rear =, front = - Item[3] Item[4] Item[5] Item[6] q.enqueue(c); // 加入 C rear = 2, front = - Item[3] Item[4] Item[5] Item[6] Queue 取出資料 str = q.dequeue(); rear = 2, front = 0 Item[3] Item[4] Item[5] Item[6] C 44

str2 = q.dequeue(); rear = 2, front = Item[3] Item[4] Item[5] Item[6] str3 = q.dequeue(); rear = 2, front = 2 C Item[3] Item[4] Item[5] Item[6] C q.enqueue(d); // 加入 D rear = 3, front = 0 Item[3] Item[4] Item[5] Item[6] D (2). 環狀佇列 定義 : 將東西排成一列, 先到的先處理 優點 : 可以重複使用佇列的位置 (3). 利用陣列來模擬環狀佇列 判斷是否可以再加入資料 : MaxSize = 3 Rear = 2 Front = 利用陣列來模擬環狀佇列 (Rear+) Mod MaxSize = 3 Mod 0 = 0 45

比較 Rear 和 Front 的值 Rear < Front 則可以放入資料 Rear = Front 滿了!! 無法放入資料 範例 : MaxSize = 5, Rear = 3, Front = 3, 表示目前為空 Rear = 4 (MaxSize), Front = 3, 無法放入資料 利用陣列來模擬環狀佇列 (Rear+) Mod MaxSize = 5 Mod 5 = 0 比較 Rear 和 Front 的值 Rear < Front 則可以放入資料 Rear = Front 滿了!! 無法放入資料 0 < Front 可以放入資料放入到 0 的位置 範例 : MaxSize = 6, Rear = 4, Front = 3 () 是否可以再放入資料 (Rear + ) % MaxSize = 5 % 6 = 3 Rear (3) = Front (3) ns: 不可放入資料 (2) 放入的資料位置在何處 ns: 不可放入資料 範例 : MaxSize = 5, Rear = 2, Front = 4 () 是否可以再放入資料 (2+) % 5 = 3 3 < 4 ns: 可以再放資料 (2) 放入的資料位置在何處 ns: 放在 3 的位置 範例 : MaxSize = 7, Rear = 7, Front = 6 () 是否可以再放入資料 (7+) % 7 = 4 46

4 < 6 ns: 可以再放資料 (2) 放入的資料位置在何處 ns: 放在 4 的位置 範例 : MaxSize = 5, Rear = 3, Front = 4 () 是否可以再放入資料 (3+) % 5 = 2 2 < 4 ns: 可以再放資料 (2) 放入的資料位置在何處 ns: 放在 2 的位置 (4). 用陣列結構實作佇列 範例 範例 範例 使用函數動作說明 Rear 值 Front 值 EnQueue() 把 加到 0 的位置 0-2 EnQueue() 把 加到 的位置 - 3 DeQueue() 取出 0 4 EnQueue(C) 把 C 加到 2 的位置 2 0 5 DeQueue() 取出 2 6 DeQueue() 使用函數動作說明 Rear 值 Front 值 EnQueue() 把 加到 0 的位置 0 - EnQueue() 把 加到 的位置 - DeQueue() 取出 0 EnQueue(C) 把 C 加到 2 的位置 2 0 DeQueue() 取出 2 DeQueue() 取出 C 2 2 使用函數動作說明 Rear 值 Front 值 EnQueue() 把 加到 3 的位置 3 47

EnQueue(C) 把 C 加到 0 的位置 0 EnQueue(D) 把 D 加到 的位置 DeQueue() 取出 2 EnQueue(E) 把 E 加到 2 的位置 2 2 DeQueue() 取出 2 3 用鏈結串列實作佇列 4.4 綜合練習 (). 利用鏈結串列方式實作貨品管理程式 (array_link_list_0.txt) 本練習要利用陣列的方式撰寫一個進出貨管理程式 48