diff --git a/docs/chapter_array_and_linkedlist/array.md b/docs/chapter_array_and_linkedlist/array.md index 7f853a8f5..89896088a 100644 --- a/docs/chapter_array_and_linkedlist/array.md +++ b/docs/chapter_array_and_linkedlist/array.md @@ -67,7 +67,10 @@ comments: true === "C" ```c title="array.c" - + /* 初始化数组 */ + int nums[8] = {1, 2, 4, 8, 16 ,32 ,64}; /* 从ANSI C开始支持这种初始化 即完全初始化 */ + int arr[5] = {1, 2}; /* 不完全初始化 未初始化的元素会被置0 */ + int days[12] = {31, 28, [4] = 31, 30, 31, [1] = 29}; /* 从C99开始支持 指定初始化器 即指定数组中某一位元素的数值 */ ``` === "C#" @@ -174,7 +177,14 @@ elementAddr = firtstElementAddr + elementLength * elementIndex === "C" ```c title="array.c" - + /* 随机返回一个数组元素 */ + int randomAccess(int nums[], int size) { + //在区间[0, nums的长度)中随机抽取一个数字 + int randomIndex = rand() % size; + //获取并返回随机元素 + int random = nums[randomIndex]; + return random; + } ``` === "C#" @@ -293,7 +303,17 @@ elementAddr = firtstElementAddr + elementLength * elementIndex === "C" ```c title="array.c" - + /*扩展数组长度 */ + int* extend(int nums[], int size, int enlarge) { + // 初始化一个扩展长度后的数组 + int res[size + enlarge]; + // 将原数组中的所有元素复制到新数组 + for (int i = 0; i < size; i++) { + res[i] = nums[i]; + } + // 返回扩展后的新数组 + return res; + } ``` === "C#" @@ -455,7 +475,24 @@ elementAddr = firtstElementAddr + elementLength * elementIndex === "C" ```c title="array.c" - + /* 在数组的索引 index 处插入元素 num */ + void insert(int nums[], int size, int num, int index) + { + // 把索引 index 以及之后的所有元素向后移动一位 + for (int i = size - 1; i > index; i--) { + nums[i] = num[i - 1]; + } + // 将 num 赋给 index 处元素 + nums[index] = num; + } + + /* 删除索引 index 处元素 */ + void remove(int nums[], int size, int index) { + // 把索引 index 之后的所有元素向前移动一位 + for (int i = index; i < size - 1; i++) { + nums[i] = nums[i + 1]; + } + } ``` === "C#" @@ -585,7 +622,14 @@ elementAddr = firtstElementAddr + elementLength * elementIndex === "C" ```c title="array.c" - + /* 遍历数组 */ + void traverse(int nums[], int size) { + int count = 0; + // 通过索引遍历数组 + for (int i = 0; i < size; i++) { + count++; + } + } ``` === "C#" @@ -692,7 +736,15 @@ elementAddr = firtstElementAddr + elementLength * elementIndex === "C" ```c title="array.c" - + /* 在数组中查找指定元素 */ + int find(int nums[], int size, int target) { + for (int i = 0; i < size; i++) { + if (nums[i] == target) { + return i; + } + } + return -1; + } ``` === "C#"