這一部分內容是關於資料結構的一些基礎概念,這有助於我們理解後續的內容:
資料:對客觀事物的符號表示,在計算機中是指所有能輸入到計算機處理的符號的總稱。
資料元素:資料組成的基本單位,元素一般作為資料結構中的乙個整體考慮和處理,可能包含多個資料項,例如表中的一條記錄為乙個資料元素,但含有多個資料項。
資料物件:指的是性質相同的資料元素組成的集合,是資料的乙個子集。
資料結構:相互之間存在一種或多種特定關係的資料元素的集合。
【邏輯結構】
這裡元素之間的關係可以分為幾類:第一種是集合關係,第二種是線性的關係,單鏈表就是這樣一種關係,第三種和第四種分別是樹形關係和圖形關係,也就是對應於樹和圖。
上面描述這麼多,最關鍵就是為了說明資料和關係兩個概念。這裡的關係指的是邏輯關係,例如兩個資料a,b按照複數的邏輯關係組織且a為實部,b為虛部。
【儲存結構】
有了數學上的資料結構概念,我們還需要把資料對映到計算機中表示(儲存結構),也就是將資料和關係用計算機語言來表示出來,乙個位串可以表示乙個資料元素(8位可以用來表示字元),
通常稱這個位串為元素,如果乙個位串包含多個資料項,對應於每個資料項的被稱為資料域。根據不同表示方法可以得到順序和鏈式兩種儲存結構。
⭐總結上面的內容就是乙個演算法的設計取決於邏輯結構,演算法的實現依賴儲存結構。
【資料型別】
為了方便表示儲存結構,高階程式語言借助資料型別來對它進行描述。資料型別的定義是乙個值的集合和這個值集上一組操作的總稱。
根據值的不同特性,資料型別又可以分為兩類:一類是非結構的「原子型別」(整形、指標),另一類是」結構型別「(陣列),結構型別的值是若干成分按照某種結構組成,
這裡的成分既可以是結構的也可以是非結構的。由於資料結構可以看作是一組具有相同結構的值,所以結構型別也可以看作是資料結構和定義在上面的一組操作來構成的。
⭐資料型別不僅可以表示儲存關係,還可以定義一組該型別的操作。
【抽象資料型別】
抽象資料型別實質和資料型別一樣,使用者可以自己定義資料型別。引入了抽象資料型別後,乙個模組內部定義一組資料和資料操作的細節,對外只需要提供抽象資料和抽象操作。
按值的不同特性分為:原子型別、固定聚合型別(值由確定數目的成分按某種結構組成)、可變聚合型別(成分數目不確定)、多型資料型別(值的成分不確定,如可以為整數或者字元)。
【演算法】
演算法是由控制結構和原操作構成,則演算法時間取決於兩者的綜合效果。演算法的時間度量可以根據某一問題基本操作重複次數。
若某一問題基本操作執行次數是n的某個函式f(n),則演算法的時間度量為 t(n)=o(f(n))。隨著問題規模的增大,演算法時間增長率同f(n)相同,稱為演算法的漸進時間複雜度。
程式占用的儲存空間可以分為本身資料所需和過程的輔助空間,針對演算法對空間的度量,有空間複雜度:s(n)=o(f(n))。
第一章讀書筆記
本章內容主要講的是android系統移植和驅動開發概述,通過本章的學習知道了學習linux驅動程式設計一定要了解linux驅動只與linux核心有關,與客戶的使用的linux系統無關。也就是說,不管是那個linux系統,只要使用了同樣的linux核心,驅動就可以通過。唯一可以判斷的linux核心是否...
第一章讀書筆記
android的系統架構分為4層 第一層 linux核心。第二層 c c 庫。第三層 android。第四層 應用程式。android移植可兩個部分 應用移植和系統移植。目前linux核心主要維護3個版本 linux2.4,linux2.6和linux3.x,大多數linux系統都使用了這3個版本的...
第一章讀書筆記
若給android增加新的驅動,則hal也要做出相應修改。不同的linux版本的驅動程式並無法通用,那麼通過判斷linux核心版本號是否相同,可以檢驗驅動是否可以通用。目前最廣泛的核心版本應該是linux2.6。電腦或者手機等不同硬體裝置越來越豐富,則需要更多的linux裝置驅動來完成硬體裝置間的互...