Microsoft PowerPoint - tree

Size: px
Start display at page:

Download "Microsoft PowerPoint - tree"

Transcription

1 資料結構的樹與二元樹 (Trees and Binary Trees) 資訊科技系林偉川 樹的基本觀念 樹 (Trees) 是一種模擬現實生活中樹幹和樹枝的資料結構, 屬於一種階層架構的非線性資料結構, 例如 : 家族族譜, 如下圖所示 : 2 1

2 樹的基本觀念 樹的樹根稱為 根節點 (Root), 在根節點之下是樹的樹枝, 擁有 0 到 n 個 子節點 (Children), 即樹的 分支 (Branch), 節點 A 是樹的根節點,B C D. 和 H 是節點 A 的子節點, 即樹枝, 如下圖所示 : 3 樹的基本觀念 在樹枝下還可以擁有下一層樹枝,I 和 J 是 B 的子節點,K L 和 M 是 E 的子節點, 節點 B 是 I 和 J 的 父節點 (Parent), 節點 E 是 K L 和 M 的父節點, 節點 I 和 J 擁有共同父節點, 稱為 兄弟節點 (Siblings),K L 和 M 是兄弟節點,B C 和 H 節點也是兄弟節點, 如下圖所示 : 4 2

3 樹的基本觀念 定義 1: 樹的節點個數是一或多個有限集合, 且 : (1) 存在一個節點稱為根節點 (2) 在根節點下的節點分成 n >= 0 個沒有交集的多個子集合 t1 t2, tn, 每一個子集合也是一棵樹, 而這些樹稱為根節點的 子樹 (Subtree) 樹在各節點之間不可以有迴圈, 或不連結的左 右子樹, 如下圖所示 : 5 樹的基本觀念 n 元樹 : 樹的一個節點最多擁有 n 個子節點 二元樹 (Binary Trees): 樹的節點最多只有兩個子節點 根節點 (Root): 沒有父節點的節點是根節點 例如 : 節點 A 葉節點 (Leaf): 節點沒有子節點的節點稱為葉節點 例如 : 節點 I J C D K L M F G 和 H 祖先節點 (Ancenstors): 指某節點到根節點之間所經過的所有節點, 都是此節點的祖先節點 6 3

4 樹的基本觀念 非終端節點 (Noterminal Nodes): 除了葉節點之外的其它節點稱為非終端節點 例如 : 節點 A B 和 E 是非終端節點 分支度 (Dregree): 指每個節點擁有的子節點數 例如 : 節點 B 的分支度是 2, 節點 E 的分支度是 3 階層 (Level): 如果樹根是 1, 其子節點是 2, 依序可以計算出樹的階層數 例如 : 上述圖例的節點 A 階層是 1,B C 到 H 是階層 2,I J 到 M 是階層 3 樹高 (Height): 樹高又稱為樹深 (Depth), 指樹的最大階層數 例如 : 上述圖例的樹高是 3 7 二元樹的基礎 樹依不同分支度可以區分成很多種, 在資料結構中最廣泛使用的樹狀結構是 二元樹, 二元樹是指樹中的每一個 節點 (Nodes) 最多只能擁有 2 個子節點, 即分支度小於或等於 2 二元樹的定義如下所示 : 定義 2: 二元樹的節點個數是一個有限集合, 或是沒有節點的空集合 二元樹的節點可以分成兩個沒有交集的子樹, 稱為 左子樹 (Left Subtree) 和 右子樹 (Right Subtree) 8 4

5 二元樹的基礎 二元樹 左子樹 右子樹 9 歪斜樹 左邊這棵樹沒有右子樹, 右邊這棵樹沒有左子樹, 雖然擁有相同節點, 但是這是兩棵不同的二元樹, 因為所有節點都是向左子樹或右子樹歪斜, 稱為 歪斜樹 (Skewed Tree), 如下圖所示 : 10 5

6 完滿二元樹 若二元樹的樹高是 h 且二元樹的節點數是 2 h -1, 滿足此條件的樹稱為 完滿二元樹 (Full Binary Tree), 如下圖所示 : 11 完滿二元樹 因為二元樹的每一個節點有 2 個子節點, 二元樹樹高是 3, 也就是有 3 個階層 (Level), 各階層的節點數, 如下所示 : 第 1 階 :1 = 2 (1-1) = 2 0 = 1 第 2 階 : 第 1 階節點數的 2 倍,1*2 = 2 (2-1) = 2 第 3 階 : 第 2 階節點數的 2 倍,2*2 = 2 (3-1) = 4 以此類推, 可以得到每一階層的最大節點數是 :2 (l-1),l 是階層數, 整棵二元樹的節點數一共是 : = 7 個, 即 2 3-1, 可以得到 : (h-1) = 2 h-1,h 是樹高 12 6

7 完整二元樹 若二元樹的節點不是葉節點, 一定擁有兩個子節點, 不過節點總數不足 2 h-1, 其中 h 是樹高, 滿足此條件的二元樹稱為 完整二元樹 (Complete Binary Tree), 如下圖所示 : 13 二元樹的表示法 二元樹在實作上有多種方法可以建立二元樹, 常用的方法有三種, 如下所示 : 二元樹陣列表示法 二元樹結構陣列表示法 二元樹鏈結表示法 14 7

8 二元樹陣列表示法 完滿二元樹是一棵樹高 h 擁有 2 h-1 個節點的二元樹, 這是二元樹在樹高 h 所能擁有的最大節點數, 換句話說, 只需配置 2 h-1 個元素, 我們就可以儲存樹高 h 的二元樹, 如下圖所示 : 15 二元樹陣列表示法 二元樹的節點編號擁有循序性, 根節點 1 的子節點是節點 2 和節點 3, 節點 2 是 4 和 5, 依此類推可以得到節點編號的規則, 如下所示 : 左子樹是父節點編號乘以 2 右子樹是父節點編號乘以 2 加

9 二元樹陣列表示法 02: #define MAX_LENGTH 16 /* 最大陣列尺寸 */ 03: int btree[max_length]; /* 二元樹陣列宣告 */ 04: /* 抽象資料型態的操作函數宣告 */ 05: extern void createbtree(int len, int *array); 06: extern void printbtree(); 17 二元樹陣列表示法 - 建立二元樹 函數 createbtree() 讀取一維陣列的元素建立二元樹, 其建立的規則, 如下所示 : 將第 1 個陣列元素插入成為二元樹的根節點 將陣列元素值與二元樹的節點值比較, 如果元素值大於節點值, 將元素值插入成為節點的右子節點, 如果右子節點不是空的, 重覆比較節點值, 直到找到插入位置後, 將元素值插入二元樹 如果元素值小於節點值, 將元素值插入成為節點的左子節點, 如果左子節點不是空的, 繼續重覆比較, 以便將元素值插入二元樹 18 9

10 二元樹陣列表示法 - 建立二元樹 二元樹陣列表示法圖例的索引值 0 並沒有使用, 整個二元樹在 16 個陣列元素中使用的元素一共有 9 個, 括號內是陣列的索引值, 如下圖所示 : {5,4,6,2,1,3,8,7,9} 19 二元樹陣列表示法 - 顯示二元樹 函數 printbtree(): 顯示二元樹 走訪 btree[] 陣列, 將元素值不是 -1 的元素都顯示出來 20 10

11 二元樹陣列表示法 一棵歪斜樹的二元樹陣列表示法使用不到三分之一的陣列元素 4/16, 因為二元樹的節點是以循序方式儲存在陣列中, 如果需要插入或刪除節點, 都需要在陣列中搬移大量元素, 如下圖所示 : 21 二元樹結構陣列表示法 在二元樹的每一個節點可以使用 C 語言的結構來儲存, 整棵二元樹使用一個結構陣列, 每一個結構是一個節點, 使用結構陣列儲存整棵二元樹, data 是節點資料, 使用 left 和 right 成員變數的索引值指向子節點的索引值, 如為 -1 表示沒有子節點, 如下圖所示 : 22 11

12 二元樹結構陣列表示法 02: #define MAX_LENGTH 16 /* 最大陣列尺寸 */ 03: struct Node { /* 二元樹的結構宣告 */ 04: int data; /* 節點資料 */ 05: int left; /* 指向左子樹的位置 */ 06: int right; /* 指向右子樹的位置 */ 07: }; 08: typedef struct Node TreeNode; /* 樹的節點新型態 */ 09: TreeNode btree[max_length]; 10: /* 抽象資料型態的操作函數宣告 */ 11: extern void createbtree(int len, int *array); 12: extern void printbtree(); 23 二元樹結構陣列表示法 例如 : 一棵二元樹和其結構陣列表示法, 如下圖所示 : 24 12

13 二元樹鏈結表示法 二元樹鏈結表示法是使用動態記憶體配置來建立二元樹, 類似結構陣列表示法的節點結構, 只是成員變數改成兩個指向左和右子樹的指標, 如下圖所示 : 25 二元樹鏈結表示法 02: struct Node { /* 二元樹的節點宣告 */ 03: int data; /* 儲存節點資料 */ 04: struct Node *left; /* 指向左子樹的指標 */ 05: struct Node *right; /* 指向右子樹的指標 */ 06: }; 07: typedef struct Node TNode; /* 二元樹節點的新型態 */ 08: typedef TNode *BTree; /* 二元樹鏈結的新型態 */ 09: BTree head = NULL; /* 二元樹根節點的指標 */ 10: /* 抽象資料型態的操作函數宣告 */ 11: extern void createbtree(int len, int *array); 12: extern void insertbtreenode(int d); 13: extern int isbtreeempty(); 14: extern void printbtree(); 15: extern void inorder(btree ptr); 16: extern void printinorder(); 17: extern void preorder(btree ptr); 18: extern void printpreorder(); 19: extern void postorder(btree ptr); 20: extern void printpostorder(); 26 13

14 二元樹鏈結表示法 函數 createbtree() 使用 for 迴圈走訪參數的陣列元素, 依序呼叫 insertbtreenode() 函數將一個一個陣列元素的節點插入二元樹 首先是二元樹的根節點 5,left 和 right 指標指向 NULL, 如下圖所示 : 27 二元樹鏈結表示法 - 建立二元樹 2 第二次呼叫 insertbtreenode() 函數插入元素 6, 鏈結至右子樹 第三次呼叫插入元素 4 成為左子樹 等到執行完 createbtree() 函數的 for 迴圈後, 建立的二元樹, 如下圖所示 : 28 14

15 二元樹鏈結表示法 - 顯示二元樹 函數 printbtree(): 顯示二元樹 函數 printbtree() 使用 while 迴圈分別走訪二元樹的左右分支, 不過這個函數並沒有辦法顯示二元樹的全部節點資料 29 二元樹的走訪 陣列和單向鏈結串列都只能從頭至尾或從尾至頭執行單向 走訪 (Traverse), 不過二元樹的每一個節點都擁有指向左和右 2 個子節點的指標, 所以走訪可以有兩條路徑 例如 : 一棵二元樹, 如下圖所示 : 30 15

16 二元樹的走訪 - 種類 二元樹的走訪過程是持續決定向左或向右走, 直到沒路可走 很明顯的! 二元樹的走訪是一種遞迴走訪, 依照遞迴函數中呼叫的排列順序不同, 可以分成三種走訪方式, 如下所示 : 中序走訪方式 (Inorder Traversal) 前序走訪方式 (Preorder Traversal) 後序走訪方式 (Postorder Traversal) 31 中序走訪方式 中序走訪是沿著二元樹的左方往下走, 直到無法繼續前進後, 顯示節點, 退回到父節點顯示父節點, 然後繼續往右走, 如果右方都無法前進, 顯示節點, 再退回到上一層 其顯示的節點順序, 如下所示 : 1,2,3,4,5,6,7,8,9 在上述中序走訪節點順序中, 可以看出根節點 5 是位在正中間, 之前都是左子樹的節點, 之後都是右子樹的節點 32 16

17 中序走訪方式 中序走訪的遞迴函數 inorder() 使用二元樹指標 ptr 進行走訪, 中序走訪的步驟, 如下所示 : Step 1: 檢查是否可以繼續前進, 即指標 ptr 不等於 NULL Step 2: 如果可以前進, 其處理方式如下所示 : (1) 遞迴呼叫 inorder(ptr->left) 向左走 (2) 處理目前的節點, 顯示節點資料 (3) 遞迴呼叫 inorder(ptr->right) 向右走 33 中序走訪方式 - 遞迴呼叫 34 17

18 前序走訪方式 前序走訪方式是走訪到的二元樹節點, 就立刻顯示節點資料, 走訪的順序是先向樹的左方走直到無法前進後, 才轉往右方走 其顯示的節點順序, 如下所示 : 5,4,2,1,3,6,8,7,9 在上述前序走訪節點順序中, 可以看出根節點 5 一定是第 1 個, 左右子樹的根節點一定在其它節點之前 35 前序走訪方式 前序走訪的遞迴函數 preorder() 使用二元樹指標 ptr 進行走訪, 前序走訪的步驟, 如下所示 : Step 1: 先檢查是否已經到達葉節點, 也就是指標 ptr 等於 NULL Step 2: 如果不是葉節點表示可以繼續走, 其處理方式如下所示 : (1) 處理目前的節點, 顯示節點資料 (2) 遞迴呼叫 preorder(ptr->left) 向左走 (3) 遞迴呼叫 preorder(ptr->right) 向右走 36 18

19 前序走訪方式 - 遞迴呼叫 37 後序走訪方式 後序走訪方式剛好和前序走訪相反, 它是等到節點的 2 個子節點都走訪過後才執行處理, 顯示節點資料 依照後序走訪的二元樹, 其顯示的節點順序, 如下所示 : 1,3,2,4,7,9,8,6,5 在上述後序走訪節點順序中, 可以看出根節點 5 是最後 1 個, 而且左右子樹的根節點一定在其它節點之後 38 19

20 後序走訪方式 後序走訪的遞迴函數 postorder() 使用二元樹指標 ptr 進行走訪, 後序走訪的步驟, 如下所示 : Step 1: 先檢查是否已經到達葉節點, 就是指標 ptr 等於 NULL Step 2: 如果不是葉節點表示可以繼續走, 其處理方式如下所示 : (1) 遞迴呼叫 postorder(ptr->left) 向左走 (2) 遞迴呼叫 postorder(ptr->right) 向右走 (3) 處理目前的節點, 顯示節點資料 39 後序走訪方式 - 遞迴呼叫 40 20

21 二元搜尋樹 二元搜尋樹 (Binary Search Trees) 是一種二元樹, 其節點資料的排列擁有一些特性, 如下所示 : 二元樹的每一個節點值都不相同, 在整棵二元樹中的每一個節點都擁有不同值 每一個節點的資料大於左子節點 ( 如果有的話 ) 的資料, 但是小於右子節點 ( 如果有的話 ) 的資料 節點的左 右子樹也是一棵二元搜尋樹 41 二元搜尋樹 例如 : 在前所建立的二元樹就是一棵二元搜尋樹, 如下圖所示 : 42 21

22 二元搜尋樹的節點搜尋 二元搜尋樹的節點搜尋十分簡單, 因為右子節點的值一定大於左子節點, 所以只需從根節點開始比較, 就知道搜尋值是位在右子樹或左子樹, 繼續往子節點進行比較, 就可以找出是否擁有指定的節點值 例如 : 在前所描述的二元搜尋樹找尋節點資料 8, 第一步與樹根 5 比較, 因為比較大, 所以節點在右子樹, 接著和右子樹的節點 6 比較, 還是比較大, 所以繼續向右子樹走, 然後是節點 8, 只需三次比較就可以找到搜尋值 43 二元搜尋樹的節點搜尋 在 C 程式是使用 while 迴圈配合 ptr 指標 ( 指向根節點 head) 進行各子節點資料的比較, 以便執行二元搜尋樹的搜尋, 如下所示 : while ( ptr!= NULL ) { if ( ptr->data == d ) return ptr; else if ( ptr->data > d ) ptr = ptr->left; else ptr = ptr->right; } 上述 while 迴圈的 if 條件判斷是否找到, 如果節點值比搜尋值大,ptr = ptr->left 向左子樹找, 否則, ptr = ptr->right 向右子樹找 44 22

23 二元搜尋樹的節點刪除 - 情況 1 情況 1: 刪除葉節點 葉節點是指沒有左和右子節點的節點, 例如 : 刪除二元搜尋樹的葉節點 1 和 9, 如下圖所示 : if ( parent->left == ptr ) parent->left = NULL; else parent->right = NULL; 45 二元搜尋樹的節點刪除 - 情況 2 情況 2: 刪除節點沒有左子樹 根節點 : 刪除根節點 5, 只需將根節點指標指向其右子樹節點, 如下圖所示 : head = head->right; 46 23

24 二元搜尋樹的節點刪除 - 情況 2 中間節點 : 如果刪除的是中間節點 2 和 6, 這兩個節點都沒有左子樹, 此時是將刪除節點的父節點指向其右子節點即可, 如下圖所示 : if ( parent->left == ptr ) parent->left = ptr->right; else parent->right = ptr->right; 47 二元搜尋樹的節點刪除 - 情況 3 情況 3: 刪除節點沒有右子樹 如果節點沒有右子樹, 在此情況刪除節點, 依節點的位置一樣可以分成二種 : 根節點和中間節點, 節點刪除和情況 2 相似, 只是左指標和右指標的交換 48 24

25 二元搜尋樹的節點刪除 - 情況 4 情況 4: 刪除節點擁有左子樹和右子樹 刪除節點如果擁有左子樹和右子樹, 其處理方式並不會因刪除節點的位置而不同 例如 : 一棵二元搜尋樹, 如下圖所示 : 49 二元搜尋樹的節點刪除 - 情況 4 在二元搜尋樹刪除節點 6, 它是父節點 9 的左子樹, 如果可以找到節點位在節點 2 和節點 8 之間, 將它取代成刪除節點的位置, 如此並不需要搬移太多節點, 就可以完成節點刪除 例如 : 刪除節點 6 事實上是刪除原來的葉節點 5, 因為刪除操作是交換這兩個節點來完成 從二元搜尋樹的特性可以看出符合條件的交換節點有兩個, 如下所示 : 節點 5: 從節點 6 的左子節點 2 一直從右子樹走到的葉節點 節點 7: 從節點 6 的右子節點 8 一直往左子樹走到的葉節點 50 25

26 二元搜尋樹的節點刪除 - 情況 4 筆者使用第一種方式找出符合條件的節點, 即節點 5, 程式碼如下所示 : parent = ptr; child = ptr->left; while ( child->right!=null ) { parent = child; child = child->right; } 上述 parent 是父節點,ptr 是刪除節點,child 是子節點, 在先走到左子節點後, 使用 while 迴圈往右子節點走, 直到葉節點 51 樹的二元樹表示法 二元樹在樹狀結構佔有十分重要的地位, 這是因為所有樹都可以經過轉換, 將它轉換成二元樹 例如 :n 元樹狀結構的每個節點擁有 n 個分支, 處理不同數分支的節點都需要設計不同表示方法的程式碼, 例如 : 二元樹需要 2 個指標, 三個分支需要 3 個指標, 以此類推 不只如此,n 元樹的 NULL 指標問題比二元樹更加嚴重, 因為葉節點將擁有分支數個數的 NULL 指標, 所以可以將樹先轉換成二元樹, 直接使用二元樹表示法來建立樹狀結構 52 26

27 樹的二元樹表示法 - 過程 1 例如 : 一棵樹, 如下圖所示 : 53 樹的二元樹表示法 - 過程 2 將樹轉換成二元樹, 也就是將 n 個分支變成 2 個分支, 只需把每個擁有同一個父節點的兄弟節點, 將這些兄弟節點鏈結起來, 保留最左邊的父子鏈結, 將其它父子鏈結都打斷, 就可以產生一棵二元樹, 如下圖所示 : 54 27

28 樹的二元樹表示法 - 過程 3 接著將鏈結方向調整一下, 就可以得到一棵二元樹, 如下圖所示 : 55 二元樹的運算式處理 從樹的觀念而言, 樹可以處理各種階層關係的問題, 例如 : 賽程表和家族族譜等, 如果將資料建立成二元搜尋樹, 就成為一種很好的資料搜尋方法 運算式處理可以使用堆疊執行轉換和求值, 現在我們可以改為二元樹來處理運算式, 建立運算式二元樹 56 28

29 二元樹的應用 - 運算式處理 例如 : 將中序運算式轉換成二元樹, 如下所示 : 5*6+4*3 上述中序運算式的運算元是二元樹的葉節點, 運算子是非終端節點, 因為考量運算子的優先順序, 乘號大於加號, 所以前後兩個乘號運算子先處理, 可以建立成二棵二元樹, 如下圖所示 : 57 二元樹的應用 - 運算式處理 接著處理低優先順序的加號, 就完成運算式二元樹, 如下圖所示 : 58 29

30 二元樹的應用 - 運算式處理 一棵沒有依據算子優先順序建立的運算式二元樹, 如下圖所示 : 59 二元樹的應用 - 運算式處理 運算式二元樹只需從葉節點開始計算各子節點的值, 然後依序往上就可以計算出整棵運算式二元樹的值, 如下所示 : 有優先順序的二元樹 :42 5*6 = 30 4*3 = = 42 不考慮優先順序的二元樹 : = 10 5*10 = *3 =

31 二元樹的應用 - 運算式處理 中序走訪運算式二元樹的結果如下 : 有優先順序的二元樹 :5*6+4*3 不考慮優先順序的二元樹 :5*6+4*3 前序走訪運算式的結果如下 : 有優先順序的二元樹 :+*56*43 不考慮優先順序的二元樹 :**5+643 後序走訪運算式二元樹的結果如下 : 有優先順序的二元樹 :56*43+ 不考慮優先順序的二元樹 :564+*3* 61 請寫出答案 1. 現有一個二元樹如下圖, 並將之以陣列表示? 其中節點 f i h 的儲存位置分別為何? 並將之以結構陣列表示? 並請寫出中 前 後序走訪結果? 陣列為 {a,b,c,d,e,f,g,h,i} 2. 樹根節點為何? 節點 b 的兄弟節點為何? 此樹高為何? 樹葉節點為何? 節點 g 的祖先節點為何? 左右子樹為何? a b c d e f g h i 62 31

32 請寫出答案 現有一個二元樹, 請寫出下列問題 : 二元樹階層為 i, 最多有多少個節點? 二元樹高度為 k, 最多有多少個節點? 二元樹高度為 5 的完整二元樹最少有多少個節點? 最多有多少個節點? 請畫出高度為 6 的右歪斜樹? 二元樹高度為 k, 最多有多少個樹葉節點? 最多有多少個非樹葉節點? 有 n 個節點的二元樹其高度最高為何? 最低為何? 63 請寫出答案 現有一個二元樹之前序與中序走訪如下 : 前序 :abcdefg, 中序 :dcbeafg, 請畫出此二元樹? 並請寫出後序結果? 64 32

33 請寫出答案 將下列一般樹轉為二元樹後並將之以陣列表示? 並將之以結構陣列表示? 陣列為 {a,b,c,d,e,f,i,j,l} 並請寫出中 前 後序走訪結果? a b c d e f i j l 65 請寫出答案 將下列一般樹轉為二元樹後並將之以陣列表示? 並將之以結構陣列表示? 陣列為 {a,b,c,d,e,f,g,h,i,j,k} 並請寫出中 前 後序走訪結果? a b c d e f g h i j k 66 33

Tree

Tree 樹狀結構 Tree 講師 : 洪安 大綱 樹 (Tree) 二元樹 (Binary Tree) 二元搜尋樹 (Binary Search Tree) 課堂練習 2 樹 樹 (Tree) 是一種模擬現實生活中樹幹和樹枝的資料結構, 屬於一種階層架構的非線性資料結構, 例如 : 家族族譜, 決策模型 3 樹的基本術語 樹的樹根稱為 根節點 (Root), 在根節點之下是樹的樹枝, 擁有 0 到 n 個

More information

PowerPoint Presentation

PowerPoint Presentation 樹狀結構 (Tree) NTU CSIE 大綱 樹 (Tree) 二元樹 (Binary Tree) 二元搜尋樹 (Binary Search Tree) 樹 樹 (Tree) 是一種模擬現實生活中樹幹和樹枝的資料結構, 屬於一種階層架構的非線性資料結構, 例如 : 家族族譜, 決策模型 樹的基本術語 樹的樹根稱為 根節點 (Root), 在根節點之下是樹的樹枝, 擁有 0 到 n 個 子節點 (Children),

More information

1

1 基本練習題 1. 請將下面的二元樹表示成一維陣列 A B C D E F G 答 : [0] [1] [2] [3] [4] [5] [6] [7] [11] A B C D E F G 2. 將上題的二元樹表示成二維陣列 答 : [0] [1] [2] [0] A 1 2 [1] B 3 0 [2] C 4 5 [3] D 0 0 [4] E 6 0 [5] F 0 0 [6] G 0 0 3.

More information

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

Microsoft PowerPoint - DS&Algorithm [相容模式] 資料結構與演算法 陳怡芬 什麼是 Data structure? 將資料群組織起來的抽象資料型態, 稱為資料結構 典型的資料結構 資料表格 (Table) 堆疊 (stack) 佇列 (queue) 串列 (list) 樹 (tree) 圖形 (graph) table, stack, queue: 可用陣列表現出來 List, tree, graph: 適合用指標表現出來 堆疊 (Stack) 將資料依序從堆疊下面儲存起來,

More information

Microsoft PowerPoint - 資料結構總複習

Microsoft PowerPoint - 資料結構總複習 Data Structure & Algorithm 陳怡芬 什麼是 Data structure? 將資料群組織起來的抽象資料型態, 稱為資料結構 1 典型的資料結構 資料表格 (Table) 堆疊 (stack) 佇列 (queue) 串列 (list) 樹 (tree) 圖形 (graph) table, stack, queue: 可用陣列表現出來 List, tree, graph: 適合用指標表現出來

More information

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

Stack, queue, 運算式解析 二元樹與走訪 圖的 DFS 與 BFS 拓撲排序演算法 尤拉迴路 Uva 514, 樹狀結構 Day5: 資料結構基礎 07/12 樹 (tree) 是一種特殊的資料結構, 它可以用來描述有分支的結構, 是由一個或一個以上的節點所組成的有限集合, Stack, queue, 運算式解析 二元樹與走訪 圖的 DFS 與 BFS 拓撲排序演算法 尤拉迴路 Uva 514, 10305 樹狀結構 Day5: 資料結構基礎 07/12 樹 (tree) 是一種特殊的資料結構, 它可以用來描述有分支的結構, 是由一個或一個以上的節點所組成的有限集合, 且具有下列特質 : 存在一個特殊的節點, 稱為樹根 ( root) 其餘的節點分為 n 0 個互斥的集合,T

More information

Microsoft PowerPoint Training-1 (graph theory).pptx

Microsoft PowerPoint Training-1 (graph theory).pptx 201/8/18 北一女中 201 資訊選手培訓營 0818-0822 何謂樹狀結構? 定義 : 樹 (tree) 是一種特殊的資料結構, 它可以用來描述有分支的結構, 是由一個或一個以上的節點所組成的有限集合, 且具有下列特質 : 存在一個特殊的節點, 稱為樹根 ( root) 其餘的節點分為 n 0 個互斥的集合,T 1, T 2, T 3 T n, 且每個集合稱為子樹 genda 8/18(

More information

Microsoft Word - DataStruct-981.doc

Microsoft Word - DataStruct-981.doc 4. 堆疊與佇列 (Stack and Queue) 4. Stak (). 基本觀念 定義 : 當將東西疊成一堆, 而取用的時候由上方來取出 特性 : 先進後出, 後進先出 ( 號球先放, 但 3 號球會先拿出 ) 2 3 3 2 (2). Stack 的運算 基本運算 push: 將資料放入堆疊 pop: 將資料由堆疊最頂端取出一個 TopItem: 位於堆疊中最上面的一個資料 IsEmpty:

More information

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

Microsoft PowerPoint - Fig03_Stack.ppt [相容模式] 四 堆疊與佇列 (Stack & Queue) 4-. 串列及鏈結串列 4-. 用陣列結構實作堆疊 4-3. 用鏈結串列實作堆疊 4-4. 堆疊的應用 4-5. 佇列 4-6. 用陣列結構實作佇列 4-7 7. 用鏈結串列實作佇列 堆疊的基本觀念. 定義 : 4- 堆疊 當將東西疊成一堆, 而取用的時候由上方來取出. 特性 : 先進後出, 後進先出 ( 號球先放, 但 3 號球會先拿出 ) 3 3

More information

Microsoft Word - CS-981.doc

Microsoft Word - CS-981.doc 4. 資料表示法 4.1 十進位與數字系統 (1). 基本觀念 數字系統的觀念 人們習慣以十進位的計量方式來計算 不同的數字系統有二進位 (Binary) 八進位 (Octal) 十進位 (Decimal) 十六進位(Hexadecimal) 二進位 電腦內部用來表達訊號的資料只有兩種符號 : 0 表示沒電,1 表示有電透過多個電路的組合表示出無數符號, 電腦便利用這些符號來表示不同的數字 利用兩條電線可以表示出

More information

樹 樹 1 Michael Tsai 2013/3/19 2 樹 The family tree of Sigmund Christoph von Waldburg-Zeil-Trauchburg http://www.ahneninfo.com/de/ahnentafel.htm 3 在 CS 的世界裡, 通常我們都把樹畫顛倒 樹根在上面 一棵樹有什麼特性呢? 非線性 (nonlinear), 具階層式的

More information

PowerPoint Presentation

PowerPoint Presentation 陣列與鏈結串列 NTU CSIE Outline 結構陣列鏈結串列 單向鏈結串列之資料型態 單向鏈結串列之基本運算 作業 結構陣列 優點 缺點 使用容易 刪除與插入造成資料移動頻繁浪費不必要之記憶體陣列長度為常數, 可能會不夠用 #include struct _student int math; int english; int computer; ; typedef struct

More information

投影片 1

投影片 1 Discrete Mathematics Chapter-10 Trees Introduction to Tree ( 10.1) Def 1. A connected (undirected) graph that contains no simple circuits is called a tree. Trees are particularly useful in computer science,

More information

壹 前言 一 研究動機 由於我是全國商業類技藝競賽程式設計職種的選手之一, 因此有機會參與程式設計類的研習, 在一次由三重商工林易民老師主講的研習中, 他提到 二元樹拜訪 給定前序 中序轉後序 相當有挑戰性, 當時聽到這個題目就試著解題 林易民老師提到一般傳統解此題的演算法是以 先重建二元樹 再以後

壹 前言 一 研究動機 由於我是全國商業類技藝競賽程式設計職種的選手之一, 因此有機會參與程式設計類的研習, 在一次由三重商工林易民老師主講的研習中, 他提到 二元樹拜訪 給定前序 中序轉後序 相當有挑戰性, 當時聽到這個題目就試著解題 林易民老師提到一般傳統解此題的演算法是以 先重建二元樹 再以後 投稿類別 : 資訊類 篇名 : 二元樹的走訪 給定前序 中序轉後序 遞迴演算法及實作 作者 : 李恩瑋 國立宜蘭高級商業職業學校 資料處理科三年忠班 指導老師 : 陳建州老師 盧忠信老師 壹 前言 一 研究動機 由於我是全國商業類技藝競賽程式設計職種的選手之一, 因此有機會參與程式設計類的研習, 在一次由三重商工林易民老師主講的研習中, 他提到 二元樹拜訪 給定前序 中序轉後序 相當有挑戰性, 當時聽到這個題目就試著解題

More information

Microsoft PowerPoint - queue.ppt

Microsoft PowerPoint - queue.ppt 資料結構的佇列 (Queues) 資訊科技系林偉川 佇列的基礎 佇列 (Queues) 是一種和堆疊十分相似的資料結構, 在日常生活中隨處可見的排隊人潮, 例如 : 在郵局排隊寄信 銀行排隊存錢或電影院前排隊買票的隊伍, 其組成的線性串列就是一種佇列, 如下圖所示 : 2 1 佇列 (Queue) 佇列的定義 佇列的動作 FIFO (First In First Out) Front Rear 3

More information

陣列與鏈結串列 Array and Linked List

陣列與鏈結串列 Array and Linked List 陣列與鏈結串列 Array and Linked List 講師 : 洪安 1 大綱 結構陣列 鏈結串列 單向鏈結串列之資料型態 單向鏈結串列之基本運算 課堂練習 2 結構陣列 優點 缺點 使用容易 class student int math; int english; int computer; ; 刪除與插入造成資料移動頻繁 浪費不必要之記憶體 int main() student s[5];

More information

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1 0 0 = 1 0 = 0 1 = 0 1 1 = 1 1 = 0 0 = 1 : = {0, 1} : 3 (,, ) = + (,, ) = + + (, ) = + (,,, ) = ( + )( + ) + ( + )( + ) + = + = = + + = + = ( + ) + = + ( + ) () = () ( + ) = + + = ( + )( + ) + = = + 0

More information

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF> 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 考 试 2009 年 上 半 年 软 件 设 计 师 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 请 按 下 述 要 求 正 确 填 写 答 题 纸 1. 在 答 题 纸 的 指 定 位 置 填 写 你 所 在 的 省 自 治 区 直 辖 市 计 划 单 列 市 的 名 称 2. 在 答

More information

樹 HW3 今天出爐. 加油! 樹 2 Michael Tsai 2012/3/27 HW2 星期四 due. 下周放假. 下下周上課. 嚇嚇嚇周期中考! 2 期中考 (4/17)!! 我的想法 : 關書 A4 大小一張, 雙面, 抄到你開心為止 ( 期末考沿用 ) 禁止使用放大鏡 顯微鏡 ( 供過小字體辨識用 ) XD 題目可能有 是非題 ( 並解釋原因 ) 填空題 問答題 ( 寫 algorithm,

More information

Microsoft PowerPoint - C_Structure.ppt

Microsoft PowerPoint - C_Structure.ppt 結構與其他資料型態 Janet Huang 5-1 結構的宣告 struct 結構名稱 struct 結構名稱變數 1, 變數 2,, 變數 m; struct 結構名稱 變數 1, 變數 2,, 變數 m; student; student; 5-2 1 結構變數初值的設定 struct 結構名稱 struct 結構名稱變數 = 初值 1, 初值 2,, 初值 n student="janet","1350901",100,95

More information

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

資料結構與演算法複習試題(出自:全國資訊競賽89, 91、IOI 2002, 2003) 資料結構與演算法複習試題 ( 出自 : 全國資訊競賽 89, 91 IOI 2002, 2003) Stack and Queue 1. 假設指令 ENQ X 的動作是將暫存器 X 的值存入佇列, 指令 DEQ X 的動作是自佇列取出一個數目 存入暫存器 X 中 若暫存器 A B C D 的內含值分別為 6 7 8 9 時, 依序執行 ENQ A ENQ B DEQ C DEQ D ENQ C ENQ

More information

PowerPoint Presentation

PowerPoint Presentation 資料結構概論 NTU CSIE Outline 資料結構概論 C 語言的結構 (struct) 結構化的資料常見的資料結構簡介 從一個例子開始 算出班上十位同學成績之總分與平均 #include int main() // 宣告變數與資料內容 int a0=80, a=90, a2=70, a3=66, a4=56; int a5=99, a6=88, a7=50, a8=60,

More information

Microsoft Word - 103高考-資料結構

Microsoft Word - 103高考-資料結構 103 年公務人員高等考試三級考試試題類科 : 資訊處理科目 : 資料結構 一 給一個排序好的陣列 (Sorted Array) A[low high], 當我們要搜尋一個元素 X 是否在此陣列 A 中, 二元搜尋法 (Binary Search) 是檢查陣列的中間位置的元素 A[next], next=[(low+high)/2], 和 X 做比較, 並依比較結果作下列更新 Case: A[next]=X:return

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: [email protected] 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

1

1 基本練習題 1 答 :(A) 2 答 :(B) 3 答 :(C) 4 答 :(B) 5 答 :(D) 6 答 :2 7 答 :(B) 8 答 : (A) A B C / D E * + F G / - (B) A B + C D - * E / (C) A B C * + E F + - 9 答 : (A) - + A * - / BCDE / F G (B) / * + A B C D E (C)

More information

試題評析

試題評析 高點 計算機概要 (C)1 下列何者 ( 約略 ) 等於 240 bytes? (A)1 megabytes 或 106 bytes (B)1 gigabytes 或 109 bytes (C)1 terabytes 或 1012 bytes (D)1 petabytes 或 1015 bytes (A)2 全加器之進位輸出其布林函數 (Boolean function) 為 : (A)C=xy z+x

More information

38 47995529 威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 1059003070 號 39 47995534 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

38 47995529 威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 1059003070 號 39 47995534 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民 1 08414159 惠 鴻 眼 鏡 行 桃 園 市 中 壢 區 福 德 里 中 華 路 一 段 186 號 1 樓 30,000 獨 資 宋 耀 鴻 105/04/27 府 經 登 字 第 1059003866 號 2 17891110 承 元 冷 氣 空 調 工 程 行 桃 園 市 桃 園 區 中 德 里 國 際 路 1 段 98 巷 50 號 2 樓 之 4 200,000 獨 資 詹 安 平

More information

樹 樹 2 Michael Tsai 2013/3/26 2 期中考 (4/16)!! 我的想法 : 關書 A4 大小一張, 雙面, 抄到你開心為止 ( 期末考沿用 ) 禁止使用放大鏡 顯微鏡 ( 供過小字體辨識用 ) XD 題目可能有 是非題 ( 並解釋原因 ) 填空題 問答題 ( 寫 algorithm, 證明題, 問 complexity) 請把答案寫清楚, 部分正確就有部分給分 作弊的直接砍頭

More information

Microsoft PowerPoint - C-Ch11.ppt

Microsoft PowerPoint - C-Ch11.ppt 各式各樣的資料型態 11-1 結構的基礎知識 決定新的型態 關於結構 結構資料型態可以將不同資料型態的值整合成新的型態 結構型態的宣告語法 : struct 結構型態 { 資料型態識別字 ; 資料型態識別字 ; }; 加上 struct 進行宣告 宣告結構變數 語法 : 結構型態結構變數名稱 ; 範例 : struct Car car1; 對成員進行存取 使用結構型態的成員時, 必須使用成員選擇運算子

More information

Microsoft Word htm

Microsoft Word htm 096 年度 11902 電腦軟體設計 ( 第二堂 -C++) 乙級技術士技能檢定學科測試試題本試題有單選題與複選題, 共 70 題, 單選題每題 0.5 分, 複選題每題 1 分, 計 65 分, 測試時間為 120 分鐘 每題中所有選項均正確才給分, 否則該題以零分計算, 答錯不倒扣分數 准考證號碼 : 另附有答案卡, 請在答案卡上作答 姓名 : 一 單選題 : 1.(4) 下列何者不是關連式表格

More information

1

1 基本練習題 1. 答 : 鄰接矩陣 : D E D E 0 0 1 0 1 0 0 0 0 1 1 0 0 1 1 0 0 1 0 1 1 1 1 1 0 5 5 D E D E 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 鄰接串列 : List[] List[] E List[] E List[] D E List[D] E List[E]

More information

Strings

Strings Linked Data Structures Cheng-Chin Chiang Introduction 鏈式資料結構 : 一種容器資料型態, 元素以節點 (Node) 形式儲存, 前後元素之間藉由單向或雙向指標互相連結 範例 串列 (Linked List) 樹 (Tree) Nodes 每個節點可以宣告為一個 structure 或 class 記憶體靠動態配置產生 須包含指到其他節點的 pointers

More information

Microsoft PowerPoint - 12 struct and other datatypes.ppt

Microsoft PowerPoint - 12 struct and other datatypes.ppt 第十一章結構與其它資料型態 結構與巢狀結構 結構陣列的各種使用方法 列舉型態 自定的型態別名 typedef 認識結構 使用者自定的資料型態 結構可將型態不同的資料合併成為新的型態 定義結構與宣告結構變數的格式如下 : struct 結構名稱 資料型態成員名稱 1; 資料型態成員名稱 2;... 資料型態成員名稱 n; struct 結構名稱變數 1, 變數 2,, 變數 n; 定義結構與宣告結構變數的語法

More information

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

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 Chapter 02 變數與運算式 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.2 2.2.1 2.2.2 2.2.3 type 2.2.4 2.3 2.3.1 print 2.3.2 input 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 + 2.4.6 Python Python 2.1 2.1.1 a p p l e b e a r c 65438790

More information

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

資料結構之C語言重點複習 鏈結串列自編教材 ( 一 ) 本教材 ( 一 ) 目標問題 : 每次以亂數產生一 [0,1000] 之整數值, 若該值 >100, 則以同方式繼續產生下一亂數值, 若該值

More information

Microsoft Word - Prog1-981.docx

Microsoft Word - Prog1-981.docx 5. 變數參照 (Memory Reference) 5.1 指標 (Pointer) (1). 指標 (Pointer) 的基本觀念 特性 內含為一 Memory Address 會因不同的機器而有不同的結果 &" 也是代表變數的位址 例如 : int var1 = 2; cout

More information

本章內容 3-1 串列的定義 3-2 用陣列直接儲存串列 循序配置串列 3-3 串列加上鏈結 鏈結配置串列 3-4 用結構體陣列實作鏈結串列 3-5 指標與結構體 3-6 動態配置節點實作鏈結串列 3-7 鏈結串列的其他運算 3-8 環狀鏈結串列 3-9 雙向鏈結串列 *3-10 鏈結串列的應用 2

本章內容 3-1 串列的定義 3-2 用陣列直接儲存串列 循序配置串列 3-3 串列加上鏈結 鏈結配置串列 3-4 用結構體陣列實作鏈結串列 3-5 指標與結構體 3-6 動態配置節點實作鏈結串列 3-7 鏈結串列的其他運算 3-8 環狀鏈結串列 3-9 雙向鏈結串列 *3-10 鏈結串列的應用 2 第三章 Linked List 版權屬作者所有, 非經作者同意不得用於教學以外用途 1 本章內容 3-1 串列的定義 3-2 用陣列直接儲存串列 循序配置串列 3-3 串列加上鏈結 鏈結配置串列 3-4 用結構體陣列實作鏈結串列 3-5 指標與結構體 3-6 動態配置節點實作鏈結串列 3-7 鏈結串列的其他運算 3-8 環狀鏈結串列 3-9 雙向鏈結串列 *3-10 鏈結串列的應用 2 3-1 串列

More information

Microsoft PowerPoint - Class5.pptx

Microsoft PowerPoint - Class5.pptx C++ 程式初探 V 2015 暑期 ver. 1.0.1 C++ 程式語言 大綱 1. 大量檔案讀取 & 計算 2. 指標 3. 動態記憶體 & 動態陣列 4. 標準函式庫 (STL) vector, algorithm 5. 結構與類別 2 大量檔案讀取 & 計算 若目前有一個程式將讀取純文字文件 (.txt) 中的整數, 並將該文件中的整數有小到大排序後, 儲存到另外一個新的純文字件中 假設有

More information

Microsoft PowerPoint - 04-array_pointer.ppt

Microsoft PowerPoint - 04-array_pointer.ppt Array 與 Pointer Array Dynamical Memory Allocation Array( 陣列 ) 陣列是用來存放同樣型態的資料陣列的大小必須在程式中預先設定在程式執行中, 陣列的大小無法改變陣列中的資料是透過索引 (index) 來存取 一維陣列的宣告 type array_name[array_size]; int iarray[100]; /* an integer array

More information

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class 踩地雷遊戲 高慧君南港高中 開啟專案 MineSweep 任務一 : 產生 30X20 個磚塊編輯 Table 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.util.arraylist; Write a description of class MyWorld

More information

大 綱 最 有 利 標 目 的 及 類 型 最 有 利 標 之 辦 理 方 式 準 用 最 有 利 標 取 最 有 利 標 精 神 最 有 利 標 之 類 型 及 其 相 關 規 定 適 用 最 有 利 標 準 用 最 有 利 標 及 取 最 有 利 標 精 神 作 業 程 序 及 實 務 分 析

大 綱 最 有 利 標 目 的 及 類 型 最 有 利 標 之 辦 理 方 式 準 用 最 有 利 標 取 最 有 利 標 精 神 最 有 利 標 之 類 型 及 其 相 關 規 定 適 用 最 有 利 標 準 用 最 有 利 標 及 取 最 有 利 標 精 神 作 業 程 序 及 實 務 分 析 最 有 利 標 作 業 程 序 實 務 分 析 交 通 部 採 購 稽 核 小 組 陳 秘 書 牧 民 日 期 :101 年 05 月 21 日 大 綱 最 有 利 標 目 的 及 類 型 最 有 利 標 之 辦 理 方 式 準 用 最 有 利 標 取 最 有 利 標 精 神 最 有 利 標 之 類 型 及 其 相 關 規 定 適 用 最 有 利 標 準 用 最 有 利 標 及 取 最 有 利 標

More information

2. 參考網站 C 語言考古題 & C 的解題 程式設計學習入門 ( 網址 : c.blogspot.com/) 網站 : 星子 ACM 小窩 ( 網址 : 網站 :ACM Onli

2. 參考網站 C 語言考古題 & C 的解題 程式設計學習入門 ( 網址 :  c.blogspot.com/) 網站 : 星子 ACM 小窩 ( 網址 :  網站 :ACM Onli 壹 課程說明 單元名稱 單元摘要 C 語言 : 進階資料型態 1. 認識陣列 (Array) 2. 認識結構 (Structure) 3. 認識指標 (Pointer) 設計者劉洲溶教師 ( 國立台中二中 ) 1. 了解陣列的含意及學習陣列宣告語法及程式設計方法 2. 了解結構的意義及學習結構宣告語法及程式設計方法 學習目標 3. 了解指標的含意及學習指標宣告語法及程式設計方法 4. 培養學生進階程式設計能力

More information

Microsoft Word htm

Microsoft Word htm 096 年度 11901 電腦軟體設計 ( 第二堂 -JAVA) 乙級技術士技能檢定學科測試試題本試題有單選題與複選題, 共 70 題, 單選題每題 0.5 分, 複選題每題 1 分, 計 65 分, 測試時間為 120 分鐘 每題中所有選項均正確才給分, 否則該題以零分計算, 答錯不倒扣分數 准考證號碼 : 另附有答案卡, 請在答案卡上作答 姓名 : 一 單選題 : 1.(4) 下列何者不是關連式表格

More information

全國各級農會第 2 次聘任職員統一考試試題 科目 : 程式設計類別 : 九職等以下新進人員作答注意事項 : 1 全部答案請寫在答案卷內, 如寫在試題紙上, 則不予計分 2 請以黑色或藍色鋼筆或原子筆書寫, 並以橫式書寫 ( 由左至右, 由上而下 ) 一 選擇題 ( 每題 4 分, 共 40 分 )

全國各級農會第 2 次聘任職員統一考試試題 科目 : 程式設計類別 : 九職等以下新進人員作答注意事項 : 1 全部答案請寫在答案卷內, 如寫在試題紙上, 則不予計分 2 請以黑色或藍色鋼筆或原子筆書寫, 並以橫式書寫 ( 由左至右, 由上而下 ) 一 選擇題 ( 每題 4 分, 共 40 分 ) 全國各級農會第 2 次聘任職員統一考試試題 一 選擇題 ( 每題 4 分, 共 40 分 ) 1. 在 Java 語言中, 請問下列何者資料型別的變數, 所需的儲存空間最少? (a) char (b) float (c) double (d) int 2. 請問下列何者非 C 語言的關鍵字 (key word)? (a) const (b) default (c) dynamic (d) continue

More information

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h 資訊系統與實習 製作 : 林郁君 一 2009.09.28 9X9 'button 被按下後 ' Dim i, j As Integer For i = 1 To 9 'i 從 1 到 9' For j = 1 To 9 'j 從 1 到 9' If j * i < 10 Then ' 如果 j 乘上 i 是為個位數 ' Response.Write(i & "*" & j & " =" & i *

More information

Microsoft Word - 051KK170AP009ZP01資構.docx

Microsoft Word - 051KK170AP009ZP01資構.docx 資料結構 < 王致強老師精選 > 高一 給定一個遞迴時間關係式 Θ 1, 1, 1 點請說明在下列情況之下,T(n) 的時間複雜度為何? ( 一 ) ac 解 ( 一 ) ac 時,n O, 故 Θ 說明 : 使用 Master method 二

More information

試題評析

試題評析 高點102 關地務方來勝 版權所有, 重製必究! 資料結構 < 王致強老師精選 > 頭號重點 1 最近二年三等 / 四等地方政府特考重要命題方向 由最近二年 ( 年至 年 ) 之三等地方政府特考以及今年 ( 年 ) 相關國家考試的 資料結構 考題, 就其命題方向所鎖定的資料結構內容, 整理如下表 : 102 高考 專技 專利 交通 高考 關務 司法 專技 地特 關務 交通 高考 司法 公務 時間複雜度

More information

公職王歷屆試題 (101 高普考 ) 101 年公務人員普通考試試題類科 : 電子工程 電信工程 資訊處理科目 : 計算機概要 BCD 數元 ( 轉換成 16 進制後其值為何? ) BCD ( 597) 16 ( 255) 16 ( ) 16 (

公職王歷屆試題 (101 高普考 ) 101 年公務人員普通考試試題類科 : 電子工程 電信工程 資訊處理科目 : 計算機概要 BCD 數元 ( 轉換成 16 進制後其值為何? ) BCD ( 597) 16 ( 255) 16 ( ) 16 ( 101 年公務人員普通考試試題類科 : 電子工程 電信工程 資訊處理科目 : 計算機概要 BCD 數元 ( 0101 10010111 轉換成 進制後其值為何? ) BCD ( 597) ( 255) ( 010110010111) ( 1125) 下列四種數值資料型別 (data type), 何者可表示的數值資料範圍最大? 整數 (integer) 長整數 (long) 單精度 (single)

More information

投影片 1

投影片 1 Chapter 17 資料結構與演算法 1 學習目標 第 17 章資料結構與演算法 認識資料結構與演算法的定義 熟悉佇列與堆疊的原理與應用 熟悉二元樹的原理與應用 瞭解常用排序與搜尋方法的原理與應用 瞭解演算法的分析方法 瞭解基本演算法設計策略 2 大綱 17-1 虛擬碼 17-2 基礎資料結構 17- 基礎演算法 17-4 演算法分析與策略 CH17 資料結構與演算法 資料結構是指資料在電腦內的表示方式和存取方法

More information

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

Microsoft Word - K33資料結構_題+解+評OK_.doc

Microsoft Word - K33資料結構_題+解+評OK_.doc ( 四 ) 為 full binary tree 的基本定義 106 年高上高普考 高分詳解 資料結構 一 給定二元樹 (binary tree) 如右圖, 樹高為 4 且共有 7 個節點 ( 一 ) 請寫出該樹之後序遍歷 (postorder traversal) 結果 (5 ( 二 ) 若以陣列 A[1..15] 實作該二元樹, 請列舉陣列 A[1..15] 的內容 (5 ( 三 ) 若要將數值

More information

龍華科技大學數位典藏論文

龍華科技大學數位典藏論文 龍 華 科 技 大 學 電 子 工 程 研 究 所 碩 士 學 位 論 文 使 用 FPGA 完 成 低 成 本 霍 夫 曼 碼 解 碼 器 Using FPGA Hardware Implementation of Huffman Decoder 研 究 生 : 周 文 正 指 導 教 授 : 吳 東 旭 博 士 中 華 民 國 九 十 九 年 七 月 摘 要 論 文 名 稱 : 使 用 FPGA

More information

PowerPoint Presentation

PowerPoint Presentation 資料結構 (Data Structures) Course 4: Link Lists ( 鏈結串列 ) 授課教師 : 陳士杰 國立聯合大學資訊管理學系 Outlines 本章重點 Link List s Def. 與 Array 的比較 Link List 之基本操作 (Insert, Delete) Link list 的種類 : Single Link List ( 單向鏈結串列 ) Circular

More information

PowerPoint Presentation

PowerPoint Presentation 第六章簡介運算子超載 (Operator Overloading) 6-1 運算子超載的基礎 6-2 超載二元運算子 6-3 超載邏輯與關係運算子 6-4 超載一元運算子 6-5 使用夥伴函數 6-6 細部檢視指定運算子 6-7 超載註標運算子 6-1 運算子超載的基礎 甚麼是運算子超載? 讓運算子 ( 符號 ) 有不同的意義 EX: 運算子的預設意義 ( 以 + 與 = 為例 ) class frac

More information

<4D F736F F D20B8EAB054B0F2A5BBAFE0A44F>

<4D F736F F D20B8EAB054B0F2A5BBAFE0A44F> 2002 年國際資訊奧林匹亞研習營甄試資訊基本能力測驗 本測驗共 50 題, 測驗時間為 50 分鐘 1 下列那一個元件不屬於 CPU? (1) 算數邏輯單元 (ALU) (2) 控制單元 (control unit) (3) 暫存器 (register) (4) 記憶體 (memory) 2 某電腦具有 16MB 記憶體, 其中 16MB 所指為何? (1) 16 2 10 bits (2) 16

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

2010 作戰流程圖 上學期主線任務 ( 北市, 全國是去年日期地點 ) 時間比賽戰場說明 09/20 資訊科校內賽建中電教約選 20 名進入培訓 11/20 北市資訊能力競賽 師大分部 校內賽前 12 名參加 12/19 全國資訊能力競賽 交通大學 北市賽前 10 名參加, 全國賽前 10 名進入

2010 作戰流程圖 上學期主線任務 ( 北市, 全國是去年日期地點 ) 時間比賽戰場說明 09/20 資訊科校內賽建中電教約選 20 名進入培訓 11/20 北市資訊能力競賽 師大分部 校內賽前 12 名參加 12/19 全國資訊能力競賽 交通大學 北市賽前 10 名參加, 全國賽前 10 名進入 2010 作戰流程圖 上學期主線任務 ( 北市, 全國是去年日期地點 ) 時間比賽戰場說明 09/20 資訊科校內賽建中電教約選 20 名進入培訓 11/20 北市資訊能力競賽 師大分部 校內賽前 12 名參加 12/19 全國資訊能力競賽 交通大學 北市賽前 10 名參加, 全國賽前 10 名進入 TOI 第一階段 上學期支線任務 ( 松山工農是去年日期 ) 時間比賽戰場說明 11/08 松山工農初賽

More information

ACI pdf

ACI pdf 09 9.1 -...9-2 9.1.1...9-2 9.1.2...9-3 9.2 -...9-4 9.2.1 PMT - ()...9-4 9.2.2...9-6 9.3 -...9-8 9.3.1 PMT - ()...9-8 9.4...9-10 9.4.1... 9-11 9.4.2...9-12 9.4.3...9-14 9.5 -...9-17 9.5.1...9-18 1 Excel...9-21

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

Microsoft Word - 第04章 堆疊與佇列.doc

Microsoft Word - 第04章 堆疊與佇列.doc Chapter 4 堆疊與佇列 4-1 Stacks and Quenes Chapter 4 堆疊與佇列 (Stacks and Queues) 4-1 堆疊 (Stacks) 要點 : 堆疊的特點 1. 定義 : 堆疊 (stacks) 是一種有序串列, 其插入 (insertion) 與刪除 (deletion) 皆須在一同端進行 2. 插入與刪除的一端稱為頂端 (top); 另一端則稱為底部

More information

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; Memory & Pointer [email protected] 2.1 2.1.1 1 int *p int a 0x00C7 0x00C7 0x00C7 2.1.2 2 int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; 2.1.3 1. 2. 3. 3 int A,

More information

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023) ( CIP) /. :, 2005. 2 ( ) ISBN 7-5624-3339-9.......... TP311. 1 CIP ( 2005) 011794 : : : : * : : 174 ( A ) :400030 : ( 023) 65102378 65105781 : ( 023) 65103686 65105565 : http: / /www. cqup. com. cn : fxk@cqup.

More information

什么是函数式编程?

什么是函数式编程? 函数式编程 FUNCTIONAL PROGRAMMING [email protected] 什么是函数式编程? 真相是 从停机问题开始 Bug 假设有停机判定算法 function halting(func, input) { } return if_func_will_halt_on_input; 充分利用停机判定 function ni_ma(func) { if (halting(func,

More information

Microsoft Word - ACL chapter02-5ed.docx

Microsoft Word - ACL chapter02-5ed.docx 第 2 章神奇的質數 2.1.1 什麼是質數 1 1 1 打下好基礎 - 程式設計必修的數學思維與邏輯訓練 1 1 0 10 2 3 5 7 4 6 8 9 10 4 10000 1229 1000 168 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131

More information

<4D F736F F D B0EAA677A7BDAF53A6D2A4ADB5A52DAD70BAE2BEF7A46AB74E>

<4D F736F F D B0EAA677A7BDAF53A6D2A4ADB5A52DAD70BAE2BEF7A46AB74E> 106 年公務人員特種考試國家安全局國家安全情報人員考試試題 考試別 : 國家安全情報人員 等別 : 五等考試 類科組 : 資訊組 科目 : 計算機大意 十進位數字 100 可以轉換成下列何者表示法? 二進位制 01101000 十六進位制 64 八進位制 134 四進位制 1211 對兩個位元串 X = 01101101 和 Y = 11000010 做 AND, OR, XOR, NAND 等邏輯運算,

More information

第1章

第1章 第 8 章 函式 1 本章提要 8.1 前言 8.2 如何定義函式 8.3 函式的呼叫和返回 8.4 傳遞陣列 8.5 方法多載 8.6 遞迴 8.7 綜合練習 8.8 後記 2 8.1 前言 每一種高階程式語言都有提供函式 (Function)( 或稱函數 ) 的功能, 以便將經常使用到的程式功能包裝成函式的形式, 如此一來便能反覆地呼叫該函式來完成某件特定工作在高階程式語言中, 副程式 (Subroutine)

More information

untitled

untitled A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF ) 2.1 C++ main main main) * ( ) ( ) [ ].* ->* ()[] [][] ** *& char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f) char (*f)(int); (*f) (int) (

More information

Microsoft PowerPoint - C-Ch10.ppt

Microsoft PowerPoint - C-Ch10.ppt 了解陣列元素的位址 陣列 指標的應用 10-1 陣列與指標的關係 可以使用位址運算子 (&) 來查詢陣列中各個元素的位址 &test[0] 這行表示陣列最前面元素的位址 &test[1] 這行表示陣列第二個元素的位址 關於陣列名稱的機制 陣列名稱可以表示陣列最前面元素的位址 #include int main(void) int test[5] = 80,60,55,22,75;

More information

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

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

More information

204 */ InitiateStack s ; /* s */ i = n; t = p = new node; /* */ p->data = postorder[i]; while i > q = new node; if parent[i - ] == postorder[i] S,T S

204 */ InitiateStack s ; /* s */ i = n; t = p = new node; /* */ p->data = postorder[i]; while i > q = new node; if parent[i - ] == postorder[i] S,T S 28 4 Vol.28 No.4 4 204 2 JOURNAL OF NANTONG VOCATIONAL UNIVERSITY Dec. 204!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! doi:0.3969/j.issn.008-5327.204.04.024 唐自立 ( 苏州大学计算机科学与技术学院, 江苏苏州 25006)

More information

1 DISJOINT SETS 建國中學 01 年資訊能力競賽培訓講義 //11 Algorithm Path Compression 1: procedure Find(x) : if x.parent x then 3: x.parent Find(x.parent) : retur

1 DISJOINT SETS 建國中學 01 年資訊能力競賽培訓講義 //11 Algorithm Path Compression 1: procedure Find(x) : if x.parent x then 3: x.parent Find(x.parent) : retur 1 DISJOINT SETS 建國中學 01 年資訊能力競賽培訓講義 - 0 01//11 講義 0 - Disjoint Sets 與搜索 tony1 Kaimu 01//11 1 Disjoint Sets Disjoint Sets( 並查集 ) 是用來處理多個不相交集合的資料結構 Disjoint sets 具有兩種操 作,Union 是將兩個集合合併,Find 則是查詢某個元素所在的集合

More information