--- tags: 資料結構筆記 --- # 資料結構:Array ## 什麼是Array? Array(陣列)是一種能夠儲存相同資料型別的多個元素的資料結構。每個元素都有一個獨特的索引,可以用來訪問和操作這些元素。 ## 宣告和初始化Array 在C語言中,我們可以這樣宣告和初始化一個Array: ```C= int numbers[5]; // 宣告一個包含5個整數的Array ``` 這將創建一個包含5個整數的Array,索引範圍從0到4。 我們也可以在宣告的同時初始化Array: ```C= int numbers[5] = {1, 2, 3, 4, 5}; // 初始化一個包含1到5的整數Array ``` ## 訪問Array元素 要訪問Array中的特定元素,我們使用它的索引: ```C= int first_element = numbers[0]; // 存取第一個元素 int second_element = numbers[1]; // 存取第二個元素 ``` ## 修改Array元素的值 我們可以通過索引來修改Array中的元素: ```C= numbers[2] = 10; // 將第三個元素的值設為10 ``` ## 遍歷Array 遍歷(Traversal)是指**按照一定的順序依次訪問一個資料結構中的所有元素**。在程式設計中,通常使用迴圈來實現遍歷,以便能夠依次處理每個元素。 舉例來說,如果你有一個包含多個數字的Array,你可能會想要依次檢查每個數字,以進行特定的運算或者輸出。 我們可以使用迴圈來遍歷Array中的所有元素: ```C= for(int i = 0; i < 5; i++) { printf("%d ", numbers[i]); } ``` 這個程式片段中的 **for** 迴圈用於遍歷 **numbers** 這個Array,依次取出每個元素並打印它們出來。所以,遍歷就是按照一定的順序處理Array中的每個元素。 這個迴圈會依次打印出Array中的所有元素。 ## 注意事項 - Array的索引從0開始,所以一個包含5個元素的Array的索引範圍是0到4。 - 在使用Array之前,請確保它已被初始化,否則它的值將是不確定的。 --- # 一維陣列 ## 什麼是一維陣列? 一維陣列是一種能夠儲存相同資料型別的多個元素的資料結構。不同於一個變數只能儲存一個值,一維陣列可以儲存多個相同類型的值。 ## 宣告和初始化一維陣列 在C語言中,我們可以宣告和初始化一維陣列如下: ```C= int numbers[5]; // 宣告一個包含5個整數的一維陣列 ``` 這將創建一個包含5個整數的一維陣列,索引範圍從0到4。我們也可以在宣告的同時初始化一維陣列: ```C= int numbers[5] = {1, 2, 3, 4, 5}; // 初始化一個包含1到5的整數一維陣列 ``` ## 存取一維陣列元素 要存取一維陣列中的特定元素,你可以使用索引值: ```C= int first_element = numbers[0]; // 存取第一個元素,索引為0 int second_element = numbers[1]; // 存取第二個元素,索引為1 ``` ## 修改一維陣列元素的值 要修改一維陣列中的元素值,你可以使用索引來指定要修改的元素: ```C= numbers[2] = 10; // 將第三個元素的值設為10 ``` --- # 二維陣列 ## 介紹 ### 什麼是二維陣列? 二維陣列是一種資料結構,它可以存儲相同類型的元素,但與一維陣列不同,它們是以行和列的形式組織的。你可以將它想像成一個包含行(column)和列(row)的表格,每個格子中都有一個元素。 ## 宣告和初始化 ### 元素放在MEM中的方式 * Row-major * Column-major ![](https://i.imgur.com/0N0II7d.png) ### 如何宣告一個二維陣列? 在C語言中,我們可以這樣宣告一個二維陣列: ```C= int matrix[3][3]; // 一個3x3的整數二維陣列 ``` 這將創建一個包含3行3列的二維陣列,就像一個3x3的矩陣。 ### 如何初始化二維陣列? 我們可以在宣告的同時初始化二維陣列: ```C= int matrix[2][2] = {{1, 2}, {3, 4}}; // 一個2x2的整數二維陣列,並初始化其值 ``` ## 存取元素 ### 如何存取二維陣列中的元素? 要存取二維陣列中的特定元素,我們需要提供兩個索引值,分別代表行和列: ```C= int element = matrix[1][1]; // 存取第二行第二列的元素,值為4 ``` ## 遍歷二維陣列 ### 如何遍歷二維陣列中的所有元素? 我們可以使用兩個巢狀的迴圈來遍歷二維陣列: ```C= for(int i = 0; i < 2; i++) { for(int j = 0; j < 2; j++) { printf("%d ", matrix[i][j]); } printf("\n"); } ``` 這個迴圈將會逐行逐列地列印出所有元素。 ## 二維陣列的應用 二維陣列常用於表示矩陣、表格、圖像等多維數據結構。例如,在遊戲開發中,我們可以使用二維陣列來表示遊戲地圖。