# 資料結構 期中重點整理 ch2 ###### tags: `資料結構` `複習用` `高科大` :::spoiler **文章目錄** [TOC] ::: ## ADT資料型態和C++ Class類別 ### C++裡面的四個元件 >1. class name 類別名稱 >2. data members 靜態資料成員 資料由類別組成。 >3. member function動態 成員函式 設定運算集()可以應用在類別的物件中。 >4. levels of program access程式存取之層次 1. public 公開的 2. protected 保護的 ==公開+私有,部分人能拿取== 3. private 私有的 ==決定誰可以碰到他== EX. ### 建構子 >建構子(函式)名稱要跟類別名稱相同。 D ```java=1 class Teacher { int rate; Teacher(int rate) { this.rate=rate; } } ``` ### 運算子多載Operator Overloading <!-- >考慮運算子 == ,==通常用來檢查兩個資料項目是否相等,實作==的硬體演算法因運算元型態不同而有所不同。 --> ![](https://hackmd.io/_uploads/HkJy4mM_t.jpg) >運算子(比如+,=或==)被當作多型函式,它們的行為隨著其參數類型的不同而不同。 ### ADT of Array >每個值對應索引配置中,可以隨意拿東西跟放東西。 ><index,value> >舉例一維陣列(畫圖) >舉例多維陣列(畫圖) ### 陣列尋找Mapping A[i][j]=A[0][0]+i*4+j ### Java陣列 >Java利用一維陣列,模擬出多維陣列。 dimensional ### 線性串列/有序串列 O(1),O(n)翻譯 element ### Linear List Operation操作/運算 1. Length(L)長度 2. Retrieve 索引、擷取 3. Indexof 指數 4. Delete 刪除 5. Insert 插入/新增 6. Modify 修改 ### Polynomial多項式 f(x)=x^8-10x^5+3x^3+1.5 terms 項目=>x次方有幾個 Coefficients 係數 Non-negative integer exponent非負整數 指數/冪(次方) 8,5,3,0 >多項式為了節省空間 ### Polynomial Representation 多項式的表示法 a(x)=2^1000+1 | | 0 | 1 | 2 | | ------ | --- |:----:| --- | | a_coef 係數 | 2(有2項) | 2 | 1 | | a_exp 次方 | | 1000 | 0 | b_coef 有4項 2 1 係數 b_exp 1000 0 次方 ![](https://hackmd.io/_uploads/B1CCBVMOY.jpg) O(m+n)全部需要的時間複雜度 ### Appending New Term 增加擴充減少 比較有[效率] ### Sparse Matrices 稀疏矩陣 >只有少部分有值,剩下幾乎都是0。 舉例: Matrix=>table of values 1. 計算速度更快 2. 節省儲存空間 3. ? 浪費空間用此=> ### 陣列表示法 >多維度的陣列,通常由一維陣列通過列主序或行主序實現。 ### 列主序 Mapping對映 ![](https://hackmd.io/_uploads/BkT0LrfuF.png) >通過每列收集元素將其轉換成一維陣列y。 >在一列中,有左至右收集元素。 >每列從上至下收集 >We get y={a,b,c,d, e,f,g,h ,i,j,k,l} ### 行主序 Mapping對映 ![](https://hackmd.io/_uploads/rkokvBM_F.png) >通過每行收集元素將其轉換成一維陣列y。 >在一行中,有上至下收集元素。 >每行從左至右收集 >We get y={a,e,i ,b,f,j ,c,g,k ,d,h,i} ### Matrix 矩陣 >多個值的表 >通常用於 手機照片、人臉辨識、影像的辨視處理 >一個 M*N 的矩陣式由 M 列 N 行元素排列成的矩形陣列 #### 陣列跟矩陣的差別 >有行和列,但編號從1開始,而不是從0開始 >使用x(i,j),不用x[i][j] >我們可以使用2維陣列表示一個矩陣。 ### Lexicographical order字典排序 >又稱,辭典、辭法順序、字典排序、字典順序、辭典產品。 ### Memory Mapping記憶對映 (從2維到1維) A[i][j]=A[0][0]+(i * 4 + j) A[i][j]=A[0][0]+(i + j * 4) ### Memory Mapping(計算) ### String字串 >通常用字串表示字元陣列。 >一般字串操作包含 比較、字串連接、複製插入、字串比對,輸出等。 >null=>直到\0為止停下。 ### 背 strcat ,strncat strcmp 後續打 ### 字串比對 問題 >兩個字串 T 和 P,找出 T 當中是否有一段字串正好是 P,並且找出位置。 ### 字串專有名詞 #### Substring子字串 S1,3=>字串的1~3 S0,4=>字串的0~4 取該index的值 #### Subsequence子序列 >一串資料中其中一部分的資料。 >某串序列將不需要的資料,移除後得到的新序列。 <a class="btn btn-primary" href="https://hackmd.io/@chiaoshin369/dataTest1">**<** 上一個 資料結構 期中重點整理 ch1 </a> <a class="btn btn-primary" href="https://hackmd.io/@chiaoshin369/dataTest2" role="button"> 下一個 期中考重點整理 **>**</a>