---
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

### 如何宣告一個二維陣列?
在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");
}
```
這個迴圈將會逐行逐列地列印出所有元素。
## 二維陣列的應用
二維陣列常用於表示矩陣、表格、圖像等多維數據結構。例如,在遊戲開發中,我們可以使用二維陣列來表示遊戲地圖。