第13章 電腦解題與演算法 13-4 資料結構
Algorithms + Data Structures = Programs 什麼是「程式」 演算法 + 資料結構 = 程式 Algorithms + Data Structures = Programs 演算法是程式邏輯之處,也就是如何組織各種指令、敘述達成程式之目的 資料結構指的是將各種資料組織「結構化」後,作為一個個體來使用
什麼是資料結構? 各種由資料組織而成之結構形式的稱謂。其中結構代表一種排列方式(結構化程式語言適用) 物件導向程式語言除了上述之定義外,還包含這些結構形式衍生的行為 「很難理解」,原因在於它「過於抽象」 資料結構實際上是資料抽象化的一種結果 什麼是資料的抽象化呢(Data Abstraction)? 資料的定義與組識方式:即「資料」的抽象化 和資料有關的運算操作:即「運算」的抽象化 國文成績 5學分 英文成績 5學分 數學成績 5學分 … 資訊成績 2學分 學期平均 班級排名 學生成績
資料結構的層次 資料結構具有層次之分,上層者可由下層者來組成,完成更具意義的抽象化效果
變數的概念 60 變數是指一種內容不固定的資料項目,會隨著程式的執行而改變 變數通常是由名稱、儲存空間、儲存位址、資料型別及內容等5項內涵所組成 1. 名稱:sum 2. 儲存空間:2個bytes 3. 儲存位址:從記憶體的(5A34)16位址開始存放資料 4. 資料型別:整數 5. 內容:60 60 5A34 5A35 5A36 5A37 儲存空間佔2bytes (假設整數型別使用2bytes儲存) 一格代表 1 byte 第13章 電腦解題與演算法 / 13-3 電腦解題規劃-演算法
資料結構-陣列P304 資料結構:用來組織及管理資料的結構設計 陣列(array):由一群資料型別相同且依序排列的陣列所組成,可分為一維陣列、二維陣列等 一維陣列範例 元素 註標 10 70 90 66 75 二維陣列範例 1 2 3 4 83 77 42 66 9 76 93 54 6 10 22 45 37 11 25 A (2,0) (2,1) (2,2) (2,3) (2 4 (1,0) (1,1) (1,2) (1,3 (1,4) (0,0) (0,1) (0,2) (0,3) (0,4) 元素A[0]存放的資料:10 … 元素A[4]存放的資料:75 元素 註標 B 元素B[0][0]存放的資料:22 … 元素B[2][4]存放的資料:9 第13章 電腦解題與演算法 / 13-4 認識資料結構
資料結構-結構 結構(structure):由一群資料型別不相同且依序排列的元素所組成,是一種使用者自定的型態 例如: 學生個人資料,有姓名(字串)、電話(長整數) 、年齡(整數)…等等 第13章 電腦解題與演算法 / 13-4 認識資料結構
struct PersonalData { struct 資料型態 變數名稱; } 變數名稱 ; PersonalData { struct char name[14]; long tel; int age; char address[30]; } stu; stu[2].name=“Tom” stu[2].tel= 0900000001 stu[2].age=18 stu PersonalData name tel age address Kelly 0911555666 18 newtaipei,,,,,ROC Mery 0922334455 19 newtaipei,,,,,ROC Tom 0900000001 18 taipei,,,,,ROC
資料結構 變數是否是「資料結構」? 變數沒有章法、組織性可循,常是想到就宣告
資料結構P305 堆疊(stack):具有後進先出 (LIFO)的特性 存取規則:從頂端(top)加入及取出資料 彈出(pop) 推入(push) 彈出(pop) 頂端(top) 第13章 電腦解題與演算法 / 13-4 認識資料結構
資料結構P306 佇列(queue):具有先進先出(FIFO)的特性 存取規則:從尾端(rear)加入資料;從前端(front)取出資料 完成程序的人 (已取出的資料) 佇列的儲存空間 第13章 電腦解題與演算法 / 13-4 認識資料結構