diff --git a/codes/c/chapter_array_and_linkedlist/my_list.c b/codes/c/chapter_array_and_linkedlist/my_list.c index b261a68777..2bcb4dffb9 100644 --- a/codes/c/chapter_array_and_linkedlist/my_list.c +++ b/codes/c/chapter_array_and_linkedlist/my_list.c @@ -8,158 +8,158 @@ /* 列表类简易实现 */ struct myList { - int *nums; // 数组(存储列表元素) + int *arr; // 数组(存储列表元素) int capacity; // 列表容量 int size; // 列表大小 int extendRatio; // 列表每次扩容的倍数 }; -typedef struct myList myList; +typedef struct myList MyList; -void extendCapacity(myList *list); +void extendCapacity(MyList *nums); /* 构造函数 */ -myList *newMyList() { - myList *list = malloc(sizeof(myList)); - list->capacity = 10; - list->nums = malloc(sizeof(int) * list->capacity); - list->size = 0; - list->extendRatio = 2; - return list; +MyList *newMyList() { + MyList *nums = malloc(sizeof(MyList)); + nums->capacity = 10; + nums->arr = malloc(sizeof(int) * nums->capacity); + nums->size = 0; + nums->extendRatio = 2; + return nums; } /* 析构函数 */ -void delMyList(myList *list) { - free(list->nums); - free(list); +void delMyList(MyList *nums) { + free(nums->arr); + free(nums); } /* 获取列表长度 */ -int size(myList *list) { - return list->size; +int size(MyList *nums) { + return nums->size; } /* 获取列表容量 */ -int capacity(myList *list) { - return list->capacity; +int capacity(MyList *nums) { + return nums->capacity; } /* 访问元素 */ -int get(myList *list, int index) { - assert(index >= 0 && index < list->size); - return list->nums[index]; +int get(MyList *nums, int index) { + assert(index >= 0 && index < nums->size); + return nums->arr[index]; } /* 更新元素 */ -void set(myList *list, int index, int num) { - assert(index >= 0 && index < list->size); - list->nums[index] = num; +void set(MyList *nums, int index, int num) { + assert(index >= 0 && index < nums->size); + nums->arr[index] = num; } /* 尾部添加元素 */ -void add(myList *list, int num) { - if (size(list) == capacity(list)) { - extendCapacity(list); // 扩容 +void add(MyList *nums, int num) { + if (size(nums) == capacity(nums)) { + extendCapacity(nums); // 扩容 } - list->nums[size(list)] = num; - list->size++; + nums->arr[size(nums)] = num; + nums->size++; } /* 中间插入元素 */ -void insert(myList *list, int index, int num) { - assert(index >= 0 && index < size(list)); +void insert(MyList *nums, int index, int num) { + assert(index >= 0 && index < size(nums)); // 元素数量超出容量时,触发扩容机制 - if (size(list) == capacity(list)) { - extendCapacity(list); // 扩容 + if (size(nums) == capacity(nums)) { + extendCapacity(nums); // 扩容 } - for (int i = size(list); i > index; --i) { - list->nums[i] = list->nums[i - 1]; + for (int i = size(nums); i > index; --i) { + nums->arr[i] = nums->arr[i - 1]; } - list->nums[index] = num; - list->size++; + nums->arr[index] = num; + nums->size++; } /* 删除元素 */ // 注意:stdio.h 占用了 remove 关键词 -int removeNum(myList *list, int index) { - assert(index >= 0 && index < size(list)); - int num = list->nums[index]; - for (int i = index; i < size(list) - 1; i++) { - list->nums[i] = list->nums[i + 1]; +int removeNum(MyList *nums, int index) { + assert(index >= 0 && index < size(nums)); + int num = nums->arr[index]; + for (int i = index; i < size(nums) - 1; i++) { + nums->arr[i] = nums->arr[i + 1]; } - list->size--; + nums->size--; return num; } /* 列表扩容 */ -void extendCapacity(myList *list) { +void extendCapacity(MyList *nums) { // 先分配空间 - int newCapacity = capacity(list) * list->extendRatio; + int newCapacity = capacity(nums) * nums->extendRatio; int *extend = (int *)malloc(sizeof(int) * newCapacity); - int *temp = list->nums; + int *temp = nums->arr; // 拷贝旧数据到新数据 - for (int i = 0; i < size(list); i++) - extend[i] = list->nums[i]; + for (int i = 0; i < size(nums); i++) + extend[i] = nums->arr[i]; // 释放旧数据 free(temp); // 更新新数据 - list->nums = extend; - list->capacity = newCapacity; + nums->arr = extend; + nums->capacity = newCapacity; } /* 将列表转换为 Array 用于打印 */ -int *toArray(myList *list) { - return list->nums; +int *toArray(MyList *nums) { + return nums->arr; } /* Driver Code */ int main() { /* 初始化列表 */ - myList *list = newMyList(); + MyList *nums = newMyList(); /* 尾部添加元素 */ - add(list, 1); - add(list, 3); - add(list, 2); - add(list, 5); - add(list, 4); - printf("列表 list = "); - printArray(toArray(list), size(list)); - printf("容量 = %d ,长度 = %d\n", capacity(list), size(list)); + add(nums, 1); + add(nums, 3); + add(nums, 2); + add(nums, 5); + add(nums, 4); + printf("列表 nums = "); + printArray(toArray(nums), size(nums)); + printf("容量 = %d ,长度 = %d\n", capacity(nums), size(nums)); /* 中间插入元素 */ - insert(list, 3, 6); - printf("在索引 3 处插入数字 6 ,得到 list = "); - printArray(toArray(list), size(list)); + insert(nums, 3, 6); + printf("在索引 3 处插入数字 6 ,得到 nums = "); + printArray(toArray(nums), size(nums)); /* 删除元素 */ - removeNum(list, 3); - printf("删除索引 3 处的元素,得到 list = "); - printArray(toArray(list), size(list)); + removeNum(nums, 3); + printf("删除索引 3 处的元素,得到 nums = "); + printArray(toArray(nums), size(nums)); /* 访问元素 */ - int num = get(list, 1); + int num = get(nums, 1); printf("访问索引 1 处的元素,得到 num = %d\n", num); /* 更新元素 */ - set(list, 1, 0); - printf("将索引 1 处的元素更新为 0 ,得到 list = "); - printArray(toArray(list), size(list)); + set(nums, 1, 0); + printf("将索引 1 处的元素更新为 0 ,得到 nums = "); + printArray(toArray(nums), size(nums)); /* 测试扩容机制 */ for (int i = 0; i < 10; i++) { // 在 i = 5 时,列表长度将超出列表容量,此时触发扩容机制 - add(list, i); + add(nums, i); } - printf("扩容后的列表 list = "); - printArray(toArray(list), size(list)); - printf("容量 = %d ,长度 = %d\n", capacity(list), size(list)); + printf("扩容后的列表 nums = "); + printArray(toArray(nums), size(nums)); + printf("容量 = %d ,长度 = %d\n", capacity(nums), size(nums)); /* 释放分配内存 */ - delMyList(list); + delMyList(nums); return 0; } diff --git a/codes/cpp/chapter_array_and_linkedlist/list.cpp b/codes/cpp/chapter_array_and_linkedlist/list.cpp index d7ec60a62b..558d08e11a 100644 --- a/codes/cpp/chapter_array_and_linkedlist/list.cpp +++ b/codes/cpp/chapter_array_and_linkedlist/list.cpp @@ -9,65 +9,65 @@ /* Driver Code */ int main() { /* 初始化列表 */ - vector list = {1, 3, 2, 5, 4}; - cout << "列表 list = "; - printVector(list); + vector nums = {1, 3, 2, 5, 4}; + cout << "列表 nums = "; + printVector(nums); /* 访问元素 */ - int num = list[1]; - cout << "访问索引 1 处的元素,得到 num = " << num << endl; + int x = nums[1]; + cout << "访问索引 1 处的元素,得到 x = " << x << endl; /* 更新元素 */ - list[1] = 0; - cout << "将索引 1 处的元素更新为 0 ,得到 list = "; - printVector(list); + nums[1] = 0; + cout << "将索引 1 处的元素更新为 0 ,得到 nums = "; + printVector(nums); /* 清空列表 */ - list.clear(); - cout << "清空列表后 list = "; - printVector(list); + nums.clear(); + cout << "清空列表后 nums = "; + printVector(nums); /* 尾部添加元素 */ - list.push_back(1); - list.push_back(3); - list.push_back(2); - list.push_back(5); - list.push_back(4); - cout << "添加元素后 list = "; - printVector(list); + nums.push_back(1); + nums.push_back(3); + nums.push_back(2); + nums.push_back(5); + nums.push_back(4); + cout << "添加元素后 nums = "; + printVector(nums); /* 中间插入元素 */ - list.insert(list.begin() + 3, 6); - cout << "在索引 3 处插入数字 6 ,得到 list = "; - printVector(list); + nums.insert(nums.begin() + 3, 6); + cout << "在索引 3 处插入数字 6 ,得到 nums = "; + printVector(nums); /* 删除元素 */ - list.erase(list.begin() + 3); - cout << "删除索引 3 处的元素,得到 list = "; - printVector(list); + nums.erase(nums.begin() + 3); + cout << "删除索引 3 处的元素,得到 nums = "; + printVector(nums); /* 通过索引遍历列表 */ int count = 0; - for (int i = 0; i < list.size(); i++) { + for (int i = 0; i < nums.size(); i++) { count++; } /* 直接遍历列表元素 */ count = 0; - for (int n : list) { + for (int n : nums) { count++; } /* 拼接两个列表 */ - vector list1 = {6, 8, 7, 10, 9}; - list.insert(list.end(), list1.begin(), list1.end()); - cout << "将列表 list1 拼接到 list 之后,得到 list = "; - printVector(list); + vector nums1 = {6, 8, 7, 10, 9}; + nums.insert(nums.end(), nums1.begin(), nums1.end()); + cout << "将列表 nums1 拼接到 nums 之后,得到 nums = "; + printVector(nums); /* 排序列表 */ - sort(list.begin(), list.end()); - cout << "排序列表后 list = "; - printVector(list); + sort(nums.begin(), nums.end()); + cout << "排序列表后 nums = "; + printVector(nums); return 0; } diff --git a/codes/cpp/chapter_array_and_linkedlist/my_list.cpp b/codes/cpp/chapter_array_and_linkedlist/my_list.cpp index 16d2f6d44a..96b46cfca0 100644 --- a/codes/cpp/chapter_array_and_linkedlist/my_list.cpp +++ b/codes/cpp/chapter_array_and_linkedlist/my_list.cpp @@ -9,30 +9,30 @@ /* 列表类简易实现 */ class MyList { private: - int *nums; // 数组(存储列表元素) - int numsCapacity = 10; // 列表容量 - int numsSize = 0; // 列表长度(即当前元素数量) + int *arr; // 数组(存储列表元素) + int arrCapacity = 10; // 列表容量 + int arrSize = 0; // 列表长度(即当前元素数量) int extendRatio = 2; // 每次列表扩容的倍数 public: /* 构造方法 */ MyList() { - nums = new int[numsCapacity]; + arr = new int[arrCapacity]; } /* 析构方法 */ ~MyList() { - delete[] nums; + delete[] arr; } /* 获取列表长度(即当前元素数量)*/ int size() { - return numsSize; + return arrSize; } /* 获取列表容量 */ int capacity() { - return numsCapacity; + return arrCapacity; } /* 访问元素 */ @@ -40,14 +40,14 @@ class MyList { // 索引如果越界则抛出异常,下同 if (index < 0 || index >= size()) throw out_of_range("索引越界"); - return nums[index]; + return arr[index]; } /* 更新元素 */ void set(int index, int num) { if (index < 0 || index >= size()) throw out_of_range("索引越界"); - nums[index] = num; + arr[index] = num; } /* 尾部添加元素 */ @@ -55,9 +55,9 @@ class MyList { // 元素数量超出容量时,触发扩容机制 if (size() == capacity()) extendCapacity(); - nums[size()] = num; + arr[size()] = num; // 更新元素数量 - numsSize++; + arrSize++; } /* 中间插入元素 */ @@ -69,24 +69,24 @@ class MyList { extendCapacity(); // 将索引 index 以及之后的元素都向后移动一位 for (int j = size() - 1; j >= index; j--) { - nums[j + 1] = nums[j]; + arr[j + 1] = arr[j]; } - nums[index] = num; + arr[index] = num; // 更新元素数量 - numsSize++; + arrSize++; } /* 删除元素 */ int remove(int index) { if (index < 0 || index >= size()) throw out_of_range("索引越界"); - int num = nums[index]; + int num = arr[index]; // 索引 i 之后的元素都向前移动一位 for (int j = index; j < size() - 1; j++) { - nums[j] = nums[j + 1]; + arr[j] = arr[j + 1]; } // 更新元素数量 - numsSize--; + arrSize--; // 返回被删除元素 return num; } @@ -95,15 +95,15 @@ class MyList { void extendCapacity() { // 新建一个长度为原数组 extendRatio 倍的新数组 int newCapacity = capacity() * extendRatio; - int *tmp = nums; - nums = new int[newCapacity]; + int *tmp = arr; + arr = new int[newCapacity]; // 将原数组中的所有元素复制到新数组 for (int i = 0; i < size(); i++) { - nums[i] = tmp[i]; + arr[i] = tmp[i]; } // 释放内存 delete[] tmp; - numsCapacity = newCapacity; + arrCapacity = newCapacity; } /* 将列表转换为 Vector 用于打印 */ @@ -111,7 +111,7 @@ class MyList { // 仅转换有效长度范围内的列表元素 vector vec(size()); for (int i = 0; i < size(); i++) { - vec[i] = nums[i]; + vec[i] = arr[i]; } return vec; } @@ -120,52 +120,52 @@ class MyList { /* Driver Code */ int main() { /* 初始化列表 */ - MyList *list = new MyList(); + MyList *nums = new MyList(); /* 尾部添加元素 */ - list->add(1); - list->add(3); - list->add(2); - list->add(5); - list->add(4); - cout << "列表 list = "; - vector vec = list->toVector(); + nums->add(1); + nums->add(3); + nums->add(2); + nums->add(5); + nums->add(4); + cout << "列表 nums = "; + vector vec = nums->toVector(); printVector(vec); - cout << "容量 = " << list->capacity() << " ,长度 = " << list->size() << endl; + cout << "容量 = " << nums->capacity() << " ,长度 = " << nums->size() << endl; /* 中间插入元素 */ - list->insert(3, 6); - cout << "在索引 3 处插入数字 6 ,得到 list = "; - vec = list->toVector(); + nums->insert(3, 6); + cout << "在索引 3 处插入数字 6 ,得到 nums = "; + vec = nums->toVector(); printVector(vec); /* 删除元素 */ - list->remove(3); - cout << "删除索引 3 处的元素,得到 list = "; - vec = list->toVector(); + nums->remove(3); + cout << "删除索引 3 处的元素,得到 nums = "; + vec = nums->toVector(); printVector(vec); /* 访问元素 */ - int num = list->get(1); + int num = nums->get(1); cout << "访问索引 1 处的元素,得到 num = " << num << endl; /* 更新元素 */ - list->set(1, 0); - cout << "将索引 1 处的元素更新为 0 ,得到 list = "; - vec = list->toVector(); + nums->set(1, 0); + cout << "将索引 1 处的元素更新为 0 ,得到 nums = "; + vec = nums->toVector(); printVector(vec); /* 测试扩容机制 */ for (int i = 0; i < 10; i++) { // 在 i = 5 时,列表长度将超出列表容量,此时触发扩容机制 - list->add(i); + nums->add(i); } - cout << "扩容后的列表 list = "; - vec = list->toVector(); + cout << "扩容后的列表 nums = "; + vec = nums->toVector(); printVector(vec); - cout << "容量 = " << list->capacity() << " ,长度 = " << list->size() << endl; + cout << "容量 = " << nums->capacity() << " ,长度 = " << nums->size() << endl; // 释放内存 - delete list; + delete nums; return 0; } diff --git a/codes/csharp/chapter_array_and_linkedlist/list.cs b/codes/csharp/chapter_array_and_linkedlist/list.cs index 4df9b4c685..4dea8a70b3 100644 --- a/codes/csharp/chapter_array_and_linkedlist/list.cs +++ b/codes/csharp/chapter_array_and_linkedlist/list.cs @@ -12,56 +12,56 @@ public void Test() { /* 初始化列表 */ int[] numbers = new int[] { 1, 3, 2, 5, 4 }; - List list = numbers.ToList(); - Console.WriteLine("列表 list = " + string.Join(",", list)); + List nums = numbers.ToList(); + Console.WriteLine("列表 nums = " + string.Join(",", nums)); /* 访问元素 */ - int num = list[1]; + int num = nums[1]; Console.WriteLine("访问索引 1 处的元素,得到 num = " + num); /* 更新元素 */ - list[1] = 0; - Console.WriteLine("将索引 1 处的元素更新为 0 ,得到 list = " + string.Join(",", list)); + nums[1] = 0; + Console.WriteLine("将索引 1 处的元素更新为 0 ,得到 nums = " + string.Join(",", nums)); /* 清空列表 */ - list.Clear(); - Console.WriteLine("清空列表后 list = " + string.Join(",", list)); + nums.Clear(); + Console.WriteLine("清空列表后 nums = " + string.Join(",", nums)); /* 尾部添加元素 */ - list.Add(1); - list.Add(3); - list.Add(2); - list.Add(5); - list.Add(4); - Console.WriteLine("添加元素后 list = " + string.Join(",", list)); + nums.Add(1); + nums.Add(3); + nums.Add(2); + nums.Add(5); + nums.Add(4); + Console.WriteLine("添加元素后 nums = " + string.Join(",", nums)); /* 中间插入元素 */ - list.Insert(3, 6); - Console.WriteLine("在索引 3 处插入数字 6 ,得到 list = " + string.Join(",", list)); + nums.Insert(3, 6); + Console.WriteLine("在索引 3 处插入数字 6 ,得到 nums = " + string.Join(",", nums)); /* 删除元素 */ - list.RemoveAt(3); - Console.WriteLine("删除索引 3 处的元素,得到 list = " + string.Join(",", list)); + nums.RemoveAt(3); + Console.WriteLine("删除索引 3 处的元素,得到 nums = " + string.Join(",", nums)); /* 通过索引遍历列表 */ int count = 0; - for (int i = 0; i < list.Count; i++) { + for (int i = 0; i < nums.Count; i++) { count++; } /* 直接遍历列表元素 */ count = 0; - foreach (int n in list) { + foreach (int n in nums) { count++; } /* 拼接两个列表 */ - List list1 = new() { 6, 8, 7, 10, 9 }; - list.AddRange(list1); - Console.WriteLine("将列表 list1 拼接到 list 之后,得到 list = " + string.Join(",", list)); + List nums1 = new() { 6, 8, 7, 10, 9 }; + nums.AddRange(nums1); + Console.WriteLine("将列表 nums1 拼接到 nums 之后,得到 nums = " + string.Join(",", nums)); /* 排序列表 */ - list.Sort(); // 排序后,列表元素从小到大排列 - Console.WriteLine("排序列表后 list = " + string.Join(",", list)); + nums.Sort(); // 排序后,列表元素从小到大排列 + Console.WriteLine("排序列表后 nums = " + string.Join(",", nums)); } } diff --git a/codes/csharp/chapter_array_and_linkedlist/my_list.cs b/codes/csharp/chapter_array_and_linkedlist/my_list.cs index 101dca4a5d..89890eaf8d 100644 --- a/codes/csharp/chapter_array_and_linkedlist/my_list.cs +++ b/codes/csharp/chapter_array_and_linkedlist/my_list.cs @@ -8,98 +8,98 @@ namespace hello_algo.chapter_array_and_linkedlist; /* 列表类简易实现 */ class MyList { - private int[] nums; // 数组(存储列表元素) - private int numsCapacity = 10; // 列表容量 - private int numsSize = 0; // 列表长度(即当前元素数量) + private int[] arr; // 数组(存储列表元素) + private int arrCapacity = 10; // 列表容量 + private int arrSize = 0; // 列表长度(即当前元素数量) private readonly int extendRatio = 2; // 每次列表扩容的倍数 /* 构造方法 */ public MyList() { - nums = new int[numsCapacity]; + arr = new int[arrCapacity]; } /* 获取列表长度(即当前元素数量)*/ public int Size() { - return numsSize; + return arrSize; } /* 获取列表容量 */ public int Capacity() { - return numsCapacity; + return arrCapacity; } /* 访问元素 */ public int Get(int index) { // 索引如果越界则抛出异常,下同 - if (index < 0 || index >= numsSize) + if (index < 0 || index >= arrSize) throw new IndexOutOfRangeException("索引越界"); - return nums[index]; + return arr[index]; } /* 更新元素 */ public void Set(int index, int num) { - if (index < 0 || index >= numsSize) + if (index < 0 || index >= arrSize) throw new IndexOutOfRangeException("索引越界"); - nums[index] = num; + arr[index] = num; } /* 尾部添加元素 */ public void Add(int num) { // 元素数量超出容量时,触发扩容机制 - if (numsSize == numsCapacity) + if (arrSize == arrCapacity) ExtendCapacity(); - nums[numsSize] = num; + arr[arrSize] = num; // 更新元素数量 - numsSize++; + arrSize++; } /* 中间插入元素 */ public void Insert(int index, int num) { - if (index < 0 || index >= numsSize) + if (index < 0 || index >= arrSize) throw new IndexOutOfRangeException("索引越界"); // 元素数量超出容量时,触发扩容机制 - if (numsSize == numsCapacity) + if (arrSize == arrCapacity) ExtendCapacity(); // 将索引 index 以及之后的元素都向后移动一位 - for (int j = numsSize - 1; j >= index; j--) { - nums[j + 1] = nums[j]; + for (int j = arrSize - 1; j >= index; j--) { + arr[j + 1] = arr[j]; } - nums[index] = num; + arr[index] = num; // 更新元素数量 - numsSize++; + arrSize++; } /* 删除元素 */ public int Remove(int index) { - if (index < 0 || index >= numsSize) + if (index < 0 || index >= arrSize) throw new IndexOutOfRangeException("索引越界"); - int num = nums[index]; + int num = arr[index]; // 将索引 index 之后的元素都向前移动一位 - for (int j = index; j < numsSize - 1; j++) { - nums[j] = nums[j + 1]; + for (int j = index; j < arrSize - 1; j++) { + arr[j] = arr[j + 1]; } // 更新元素数量 - numsSize--; + arrSize--; // 返回被删除元素 return num; } /* 列表扩容 */ public void ExtendCapacity() { - // 新建一个长度为 numsCapacity * extendRatio 的数组,并将原数组拷贝到新数组 - Array.Resize(ref nums, numsCapacity * extendRatio); + // 新建一个长度为 arrCapacity * extendRatio 的数组,并将原数组拷贝到新数组 + Array.Resize(ref arr, arrCapacity * extendRatio); // 更新列表容量 - numsCapacity = nums.Length; + arrCapacity = arr.Length; } /* 将列表转换为数组 */ public int[] ToArray() { // 仅转换有效长度范围内的列表元素 - int[] nums = new int[numsSize]; - for (int i = 0; i < numsSize; i++) { - nums[i] = Get(i); + int[] arr = new int[arrSize]; + for (int i = 0; i < arrSize; i++) { + arr[i] = Get(i); } - return nums; + return arr; } } @@ -107,38 +107,38 @@ public class my_list { [Test] public void Test() { /* 初始化列表 */ - MyList list = new(); + MyList nums = new(); /* 尾部添加元素 */ - list.Add(1); - list.Add(3); - list.Add(2); - list.Add(5); - list.Add(4); - Console.WriteLine("列表 list = " + string.Join(",", list.ToArray()) + - " ,容量 = " + list.Capacity() + " ,长度 = " + list.Size()); + nums.Add(1); + nums.Add(3); + nums.Add(2); + nums.Add(5); + nums.Add(4); + Console.WriteLine("列表 nums = " + string.Join(",", nums.ToArray()) + + " ,容量 = " + nums.Capacity() + " ,长度 = " + nums.Size()); /* 中间插入元素 */ - list.Insert(3, 6); - Console.WriteLine("在索引 3 处插入数字 6 ,得到 list = " + string.Join(",", list.ToArray())); + nums.Insert(3, 6); + Console.WriteLine("在索引 3 处插入数字 6 ,得到 nums = " + string.Join(",", nums.ToArray())); /* 删除元素 */ - list.Remove(3); - Console.WriteLine("删除索引 3 处的元素,得到 list = " + string.Join(",", list.ToArray())); + nums.Remove(3); + Console.WriteLine("删除索引 3 处的元素,得到 nums = " + string.Join(",", nums.ToArray())); /* 访问元素 */ - int num = list.Get(1); + int num = nums.Get(1); Console.WriteLine("访问索引 1 处的元素,得到 num = " + num); /* 更新元素 */ - list.Set(1, 0); - Console.WriteLine("将索引 1 处的元素更新为 0 ,得到 list = " + string.Join(",", list.ToArray())); + nums.Set(1, 0); + Console.WriteLine("将索引 1 处的元素更新为 0 ,得到 nums = " + string.Join(",", nums.ToArray())); /* 测试扩容机制 */ for (int i = 0; i < 10; i++) { // 在 i = 5 时,列表长度将超出列表容量,此时触发扩容机制 - list.Add(i); + nums.Add(i); } - Console.WriteLine("扩容后的列表 list = " + string.Join(",", list.ToArray()) + - " ,容量 = " + list.Capacity() + " ,长度 = " + list.Size()); + Console.WriteLine("扩容后的列表 nums = " + string.Join(",", nums.ToArray()) + + " ,容量 = " + nums.Capacity() + " ,长度 = " + nums.Size()); } } diff --git a/codes/dart/chapter_array_and_linkedlist/list.dart b/codes/dart/chapter_array_and_linkedlist/list.dart index 7617aabe35..f0837fe5d1 100644 --- a/codes/dart/chapter_array_and_linkedlist/list.dart +++ b/codes/dart/chapter_array_and_linkedlist/list.dart @@ -7,54 +7,54 @@ /* Driver Code */ void main() { /* 初始化列表 */ - List list = [1, 3, 2, 5, 4]; - print('列表 list = $list'); + List nums = [1, 3, 2, 5, 4]; + print('列表 nums = $nums'); /* 访问元素 */ - int num = list[1]; + int num = nums[1]; print('访问索引 1 处的元素,得到 num = $num'); /* 更新元素 */ - list[1] = 0; - print('将索引 1 处的元素更新为 0 ,得到 list = $list'); + nums[1] = 0; + print('将索引 1 处的元素更新为 0 ,得到 nums = $nums'); /* 清空列表 */ - list.clear(); - print('清空列表后 list = $list'); + nums.clear(); + print('清空列表后 nums = $nums'); /* 尾部添加元素 */ - list.add(1); - list.add(3); - list.add(2); - list.add(5); - list.add(4); - print('添加元素后 list = $list'); + nums.add(1); + nums.add(3); + nums.add(2); + nums.add(5); + nums.add(4); + print('添加元素后 nums = $nums'); /* 中间插入元素 */ - list.insert(3, 6); - print('在索引 3 处插入数字 6 ,得到 list = $list'); + nums.insert(3, 6); + print('在索引 3 处插入数字 6 ,得到 nums = $nums'); /* 删除元素 */ - list.removeAt(3); - print('删除索引 3 处的元素,得到 list = $list'); + nums.removeAt(3); + print('删除索引 3 处的元素,得到 nums = $nums'); /* 通过索引遍历列表 */ int count = 0; - for (var i = 0; i < list.length; i++) { + for (var i = 0; i < nums.length; i++) { count++; } /* 直接遍历列表元素 */ count = 0; - for (var n in list) { + for (var n in nums) { count++; } /* 拼接两个列表 */ - List list1 = [6, 8, 7, 10, 9]; - list.addAll(list1); - print('将列表 list1 拼接到 list 之后,得到 list = $list'); + List nums1 = [6, 8, 7, 10, 9]; + nums.addAll(nums1); + print('将列表 nums1 拼接到 nums 之后,得到 nums = $nums'); /* 排序列表 */ - list.sort(); - print('排序列表后 list = $list'); + nums.sort(); + print('排序列表后 nums = $nums'); } diff --git a/codes/dart/chapter_array_and_linkedlist/my_list.dart b/codes/dart/chapter_array_and_linkedlist/my_list.dart index 688a9e8207..374aee00ed 100644 --- a/codes/dart/chapter_array_and_linkedlist/my_list.dart +++ b/codes/dart/chapter_array_and_linkedlist/my_list.dart @@ -6,14 +6,14 @@ /* 列表类简易实现 */ class MyList { - late List _nums; // 数组(存储列表元素) + late List _arr; // 数组(存储列表元素) int _capacity = 10; // 列表容量 int _size = 0; // 列表长度(即当前元素数量) int _extendRatio = 2; // 每次列表扩容的倍数 /* 构造方法 */ MyList() { - _nums = List.filled(_capacity, 0); + _arr = List.filled(_capacity, 0); } /* 获取列表长度(即当前元素数量)*/ @@ -25,20 +25,20 @@ class MyList { /* 访问元素 */ int get(int index) { if (index >= _size) throw RangeError('索引越界'); - return _nums[index]; + return _arr[index]; } /* 更新元素 */ void set(int index, int num) { if (index >= _size) throw RangeError('索引越界'); - _nums[index] = num; + _arr[index] = num; } /* 尾部添加元素 */ void add(int num) { // 元素数量超出容量时,触发扩容机制 if (_size == _capacity) extendCapacity(); - _nums[_size] = num; + _arr[_size] = num; // 更新元素数量 _size++; } @@ -50,9 +50,9 @@ class MyList { if (_size == _capacity) extendCapacity(); // 将索引 index 以及之后的元素都向后移动一位 for (var j = _size - 1; j >= index; j--) { - _nums[j + 1] = _nums[j]; + _arr[j + 1] = _arr[j]; } - _nums[index] = num; + _arr[index] = num; // 更新元素数量 _size++; } @@ -60,10 +60,10 @@ class MyList { /* 删除元素 */ int remove(int index) { if (index >= _size) throw RangeError('索引越界'); - int num = _nums[index]; + int num = _arr[index]; // 将索引 index 之后的元素都向前移动一位 for (var j = index; j < _size - 1; j++) { - _nums[j] = _nums[j + 1]; + _arr[j] = _arr[j + 1]; } // 更新元素数量 _size--; @@ -76,57 +76,57 @@ class MyList { // 新建一个长度为原数组 _extendRatio 倍的新数组 final _newNums = List.filled(_capacity * _extendRatio, 0); // 将原数组拷贝到新数组 - List.copyRange(_newNums, 0, _nums); - // 更新 _nums 的引用 - _nums = _newNums; + List.copyRange(_newNums, 0, _arr); + // 更新 _arr 的引用 + _arr = _newNums; // 更新列表容量 - _capacity = _nums.length; + _capacity = _arr.length; } /* 将列表转换为数组 */ List toArray() { - List nums = []; + List arr = []; for (var i = 0; i < _size; i++) { - nums.add(get(i)); + arr.add(get(i)); } - return nums; + return arr; } } /* Driver Code */ void main() { /* 初始化列表 */ - MyList list = MyList(); + MyList nums = MyList(); /* 尾部添加元素 */ - list.add(1); - list.add(3); - list.add(2); - list.add(5); - list.add(4); + nums.add(1); + nums.add(3); + nums.add(2); + nums.add(5); + nums.add(4); print( - '列表 list = ${list.toArray()} ,容量 = ${list.capacity()} ,长度 = ${list.size()}'); + '列表 nums = ${nums.toArray()} ,容量 = ${nums.capacity()} ,长度 = ${nums.size()}'); /* 中间插入元素 */ - list.insert(3, 6); - print('在索引 3 处插入数字 6 ,得到 list = ${list.toArray()}'); + nums.insert(3, 6); + print('在索引 3 处插入数字 6 ,得到 nums = ${nums.toArray()}'); /* 删除元素 */ - list.remove(3); - print('删除索引 3 处的元素,得到 list = ${list.toArray()}'); + nums.remove(3); + print('删除索引 3 处的元素,得到 nums = ${nums.toArray()}'); /* 访问元素 */ - int num = list.get(1); + int num = nums.get(1); print('访问索引 1 处的元素,得到 num = $num'); /* 更新元素 */ - list.set(1, 0); - print('将索引 1 处的元素更新为 0 ,得到 list = ${list.toArray()}'); + nums.set(1, 0); + print('将索引 1 处的元素更新为 0 ,得到 nums = ${nums.toArray()}'); /* 测试扩容机制 */ for (var i = 0; i < 10; i++) { // 在 i = 5 时,列表长度将超出列表容量,此时触发扩容机制 - list.add(i); + nums.add(i); } print( - '扩容后的列表 list = ${list.toArray()} ,容量 = ${list.capacity()} ,长度 = ${list.size()}'); + '扩容后的列表 nums = ${nums.toArray()} ,容量 = ${nums.capacity()} ,长度 = ${nums.size()}'); } diff --git a/codes/go/chapter_array_and_linkedlist/list_test.go b/codes/go/chapter_array_and_linkedlist/list_test.go index 36fb88d8db..ce83a2db4c 100644 --- a/codes/go/chapter_array_and_linkedlist/list_test.go +++ b/codes/go/chapter_array_and_linkedlist/list_test.go @@ -13,55 +13,55 @@ import ( /* Driver Code */ func TestList(t *testing.T) { /* 初始化列表 */ - list := []int{1, 3, 2, 5, 4} - fmt.Println("列表 list =", list) + nums := []int{1, 3, 2, 5, 4} + fmt.Println("列表 nums =", nums) /* 访问元素 */ - num := list[1] // 访问索引 1 处的元素 + num := nums[1] // 访问索引 1 处的元素 fmt.Println("访问索引 1 处的元素,得到 num =", num) /* 更新元素 */ - list[1] = 0 // 将索引 1 处的元素更新为 0 - fmt.Println("将索引 1 处的元素更新为 0 ,得到 list =", list) + nums[1] = 0 // 将索引 1 处的元素更新为 0 + fmt.Println("将索引 1 处的元素更新为 0 ,得到 nums =", nums) /* 清空列表 */ - list = nil - fmt.Println("清空列表后 list =", list) + nums = nil + fmt.Println("清空列表后 nums =", nums) /* 尾部添加元素 */ - list = append(list, 1) - list = append(list, 3) - list = append(list, 2) - list = append(list, 5) - list = append(list, 4) - fmt.Println("添加元素后 list =", list) + nums = append(nums, 1) + nums = append(nums, 3) + nums = append(nums, 2) + nums = append(nums, 5) + nums = append(nums, 4) + fmt.Println("添加元素后 nums =", nums) /* 中间插入元素 */ - list = append(list[:3], append([]int{6}, list[3:]...)...) // 在索引 3 处插入数字 6 - fmt.Println("在索引 3 处插入数字 6 ,得到 list =", list) + nums = append(nums[:3], append([]int{6}, nums[3:]...)...) // 在索引 3 处插入数字 6 + fmt.Println("在索引 3 处插入数字 6 ,得到 nums =", nums) /* 删除元素 */ - list = append(list[:3], list[4:]...) // 删除索引 3 处的元素 - fmt.Println("删除索引 3 处的元素,得到 list =", list) + nums = append(nums[:3], nums[4:]...) // 删除索引 3 处的元素 + fmt.Println("删除索引 3 处的元素,得到 nums =", nums) /* 通过索引遍历列表 */ count := 0 - for i := 0; i < len(list); i++ { + for i := 0; i < len(nums); i++ { count++ } /* 直接遍历列表元素 */ count = 0 - for range list { + for range nums { count++ } /* 拼接两个列表 */ - list1 := []int{6, 8, 7, 10, 9} - list = append(list, list1...) // 将列表 list1 拼接到 list 之后 - fmt.Println("将列表 list1 拼接到 list 之后,得到 list =", list) + nums1 := []int{6, 8, 7, 10, 9} + nums = append(nums, nums1...) // 将列表 nums1 拼接到 nums 之后 + fmt.Println("将列表 nums1 拼接到 nums 之后,得到 nums =", nums) /* 排序列表 */ - sort.Ints(list) // 排序后,列表元素从小到大排列 - fmt.Println("排序列表后 list =", list) + sort.Ints(nums) // 排序后,列表元素从小到大排列 + fmt.Println("排序列表后 nums =", nums) } diff --git a/codes/go/chapter_array_and_linkedlist/my_list.go b/codes/go/chapter_array_and_linkedlist/my_list.go index a8e02a6da6..f53aa5b6e4 100644 --- a/codes/go/chapter_array_and_linkedlist/my_list.go +++ b/codes/go/chapter_array_and_linkedlist/my_list.go @@ -6,90 +6,90 @@ package chapter_array_and_linkedlist /* 列表类简易实现 */ type myList struct { - numsCapacity int - nums []int - numsSize int - extendRatio int + arrCapacity int + arr []int + arrSize int + extendRatio int } /* 构造函数 */ func newMyList() *myList { return &myList{ - numsCapacity: 10, // 列表容量 - nums: make([]int, 10), // 数组(存储列表元素) - numsSize: 0, // 列表长度(即当前元素数量) - extendRatio: 2, // 每次列表扩容的倍数 + arrCapacity: 10, // 列表容量 + arr: make([]int, 10), // 数组(存储列表元素) + arrSize: 0, // 列表长度(即当前元素数量) + extendRatio: 2, // 每次列表扩容的倍数 } } /* 获取列表长度(即当前元素数量) */ func (l *myList) size() int { - return l.numsSize + return l.arrSize } /* 获取列表容量 */ func (l *myList) capacity() int { - return l.numsCapacity + return l.arrCapacity } /* 访问元素 */ func (l *myList) get(index int) int { // 索引如果越界则抛出异常,下同 - if index < 0 || index >= l.numsSize { + if index < 0 || index >= l.arrSize { panic("索引越界") } - return l.nums[index] + return l.arr[index] } /* 更新元素 */ func (l *myList) set(num, index int) { - if index < 0 || index >= l.numsSize { + if index < 0 || index >= l.arrSize { panic("索引越界") } - l.nums[index] = num + l.arr[index] = num } /* 尾部添加元素 */ func (l *myList) add(num int) { // 元素数量超出容量时,触发扩容机制 - if l.numsSize == l.numsCapacity { + if l.arrSize == l.arrCapacity { l.extendCapacity() } - l.nums[l.numsSize] = num + l.arr[l.arrSize] = num // 更新元素数量 - l.numsSize++ + l.arrSize++ } /* 中间插入元素 */ func (l *myList) insert(num, index int) { - if index < 0 || index >= l.numsSize { + if index < 0 || index >= l.arrSize { panic("索引越界") } // 元素数量超出容量时,触发扩容机制 - if l.numsSize == l.numsCapacity { + if l.arrSize == l.arrCapacity { l.extendCapacity() } // 将索引 index 以及之后的元素都向后移动一位 - for j := l.numsSize - 1; j >= index; j-- { - l.nums[j+1] = l.nums[j] + for j := l.arrSize - 1; j >= index; j-- { + l.arr[j+1] = l.arr[j] } - l.nums[index] = num + l.arr[index] = num // 更新元素数量 - l.numsSize++ + l.arrSize++ } /* 删除元素 */ func (l *myList) remove(index int) int { - if index < 0 || index >= l.numsSize { + if index < 0 || index >= l.arrSize { panic("索引越界") } - num := l.nums[index] + num := l.arr[index] // 索引 i 之后的元素都向前移动一位 - for j := index; j < l.numsSize-1; j++ { - l.nums[j] = l.nums[j+1] + for j := index; j < l.arrSize-1; j++ { + l.arr[j] = l.arr[j+1] } // 更新元素数量 - l.numsSize-- + l.arrSize-- // 返回被删除元素 return num } @@ -97,13 +97,13 @@ func (l *myList) remove(index int) int { /* 列表扩容 */ func (l *myList) extendCapacity() { // 新建一个长度为原数组 extendRatio 倍的新数组,并将原数组拷贝到新数组 - l.nums = append(l.nums, make([]int, l.numsCapacity*(l.extendRatio-1))...) + l.arr = append(l.arr, make([]int, l.arrCapacity*(l.extendRatio-1))...) // 更新列表容量 - l.numsCapacity = len(l.nums) + l.arrCapacity = len(l.arr) } /* 返回有效长度的列表 */ func (l *myList) toArray() []int { // 仅转换有效长度范围内的列表元素 - return l.nums[:l.numsSize] + return l.arr[:l.arrSize] } diff --git a/codes/go/chapter_array_and_linkedlist/my_list_test.go b/codes/go/chapter_array_and_linkedlist/my_list_test.go index 765041f946..4ed0ebf0a4 100644 --- a/codes/go/chapter_array_and_linkedlist/my_list_test.go +++ b/codes/go/chapter_array_and_linkedlist/my_list_test.go @@ -12,35 +12,35 @@ import ( /* Driver Code */ func TestMyList(t *testing.T) { /* 初始化列表 */ - list := newMyList() + nums := newMyList() /* 尾部添加元素 */ - list.add(1) - list.add(3) - list.add(2) - list.add(5) - list.add(4) - fmt.Printf("列表 list = %v ,容量 = %v ,长度 = %v\n", list.toArray(), list.capacity(), list.size()) + nums.add(1) + nums.add(3) + nums.add(2) + nums.add(5) + nums.add(4) + fmt.Printf("列表 nums = %v ,容量 = %v ,长度 = %v\n", nums.toArray(), nums.capacity(), nums.size()) /* 中间插入元素 */ - list.insert(6, 3) - fmt.Printf("在索引 3 处插入数字 6 ,得到 list = %v\n", list.toArray()) + nums.insert(6, 3) + fmt.Printf("在索引 3 处插入数字 6 ,得到 nums = %v\n", nums.toArray()) /* 删除元素 */ - list.remove(3) - fmt.Printf("删除索引 3 处的元素,得到 list = %v\n", list.toArray()) + nums.remove(3) + fmt.Printf("删除索引 3 处的元素,得到 nums = %v\n", nums.toArray()) /* 访问元素 */ - num := list.get(1) + num := nums.get(1) fmt.Printf("访问索引 1 处的元素,得到 num = %v\n", num) /* 更新元素 */ - list.set(0, 1) - fmt.Printf("将索引 1 处的元素更新为 0 ,得到 list = %v\n", list.toArray()) + nums.set(0, 1) + fmt.Printf("将索引 1 处的元素更新为 0 ,得到 nums = %v\n", nums.toArray()) /* 测试扩容机制 */ for i := 0; i < 10; i++ { // 在 i = 5 时,列表长度将超出列表容量,此时触发扩容机制 - list.add(i) + nums.add(i) } - fmt.Printf("扩容后的列表 list = %v ,容量 = %v ,长度 = %v\n", list.toArray(), list.capacity(), list.size()) + fmt.Printf("扩容后的列表 nums = %v ,容量 = %v ,长度 = %v\n", nums.toArray(), nums.capacity(), nums.size()) } diff --git a/codes/java/chapter_array_and_linkedlist/list.java b/codes/java/chapter_array_and_linkedlist/list.java index dc4d897f7f..0a22ed06dd 100644 --- a/codes/java/chapter_array_and_linkedlist/list.java +++ b/codes/java/chapter_array_and_linkedlist/list.java @@ -13,56 +13,56 @@ public static void main(String[] args) { /* 初始化列表 */ // 注意数组的元素类型是 int[] 的包装类 Integer[] Integer[] numbers = new Integer[] { 1, 3, 2, 5, 4 }; - List list = new ArrayList<>(Arrays.asList(numbers)); - System.out.println("列表 list = " + list); + List nums = new ArrayList<>(Arrays.asList(numbers)); + System.out.println("列表 nums = " + nums); /* 访问元素 */ - int num = list.get(1); - System.out.println("访问索引 1 处的元素,得到 num = " + num); + int x = nums.get(1); + System.out.println("访问索引 1 处的元素,得到 x = " + x); /* 更新元素 */ - list.set(1, 0); - System.out.println("将索引 1 处的元素更新为 0 ,得到 list = " + list); + nums.set(1, 0); + System.out.println("将索引 1 处的元素更新为 0 ,得到 nums = " + nums); /* 清空列表 */ - list.clear(); - System.out.println("清空列表后 list = " + list); + nums.clear(); + System.out.println("清空列表后 nums = " + nums); /* 尾部添加元素 */ - list.add(1); - list.add(3); - list.add(2); - list.add(5); - list.add(4); - System.out.println("添加元素后 list = " + list); + nums.add(1); + nums.add(3); + nums.add(2); + nums.add(5); + nums.add(4); + System.out.println("添加元素后 nums = " + nums); /* 中间插入元素 */ - list.add(3, 6); - System.out.println("在索引 3 处插入数字 6 ,得到 list = " + list); + nums.add(3, 6); + System.out.println("在索引 3 处插入数字 6 ,得到 nums = " + nums); /* 删除元素 */ - list.remove(3); - System.out.println("删除索引 3 处的元素,得到 list = " + list); + nums.remove(3); + System.out.println("删除索引 3 处的元素,得到 nums = " + nums); /* 通过索引遍历列表 */ int count = 0; - for (int i = 0; i < list.size(); i++) { + for (int i = 0; i < nums.size(); i++) { count++; } /* 直接遍历列表元素 */ count = 0; - for (int n : list) { + for (int num : nums) { count++; } /* 拼接两个列表 */ - List list1 = new ArrayList<>(Arrays.asList(new Integer[] { 6, 8, 7, 10, 9 })); - list.addAll(list1); - System.out.println("将列表 list1 拼接到 list 之后,得到 list = " + list); + List nums1 = new ArrayList<>(Arrays.asList(new Integer[] { 6, 8, 7, 10, 9 })); + nums.addAll(nums1); + System.out.println("将列表 nums1 拼接到 nums 之后,得到 nums = " + nums); /* 排序列表 */ - Collections.sort(list); - System.out.println("排序列表后 list = " + list); + Collections.sort(nums); + System.out.println("排序列表后 nums = " + nums); } } diff --git a/codes/java/chapter_array_and_linkedlist/my_list.java b/codes/java/chapter_array_and_linkedlist/my_list.java index 8a5acd4e5b..7302f0e0d8 100644 --- a/codes/java/chapter_array_and_linkedlist/my_list.java +++ b/codes/java/chapter_array_and_linkedlist/my_list.java @@ -10,14 +10,14 @@ /* 列表类简易实现 */ class MyList { - private int[] nums; // 数组(存储列表元素) + private int[] arr; // 数组(存储列表元素) private int capacity = 10; // 列表容量 private int size = 0; // 列表长度(即当前元素数量) private int extendRatio = 2; // 每次列表扩容的倍数 /* 构造方法 */ public MyList() { - nums = new int[capacity]; + arr = new int[capacity]; } /* 获取列表长度(即当前元素数量) */ @@ -35,14 +35,14 @@ public int get(int index) { // 索引如果越界则抛出异常,下同 if (index < 0 || index >= size) throw new IndexOutOfBoundsException("索引越界"); - return nums[index]; + return arr[index]; } /* 更新元素 */ public void set(int index, int num) { if (index < 0 || index >= size) throw new IndexOutOfBoundsException("索引越界"); - nums[index] = num; + arr[index] = num; } /* 尾部添加元素 */ @@ -50,7 +50,7 @@ public void add(int num) { // 元素数量超出容量时,触发扩容机制 if (size == capacity()) extendCapacity(); - nums[size] = num; + arr[size] = num; // 更新元素数量 size++; } @@ -64,9 +64,9 @@ public void insert(int index, int num) { extendCapacity(); // 将索引 index 以及之后的元素都向后移动一位 for (int j = size - 1; j >= index; j--) { - nums[j + 1] = nums[j]; + arr[j + 1] = arr[j]; } - nums[index] = num; + arr[index] = num; // 更新元素数量 size++; } @@ -75,10 +75,10 @@ public void insert(int index, int num) { public int remove(int index) { if (index < 0 || index >= size) throw new IndexOutOfBoundsException("索引越界"); - int num = nums[index]; + int num = arr[index]; // 将索引 index 之后的元素都向前移动一位 for (int j = index; j < size - 1; j++) { - nums[j] = nums[j + 1]; + arr[j] = arr[j + 1]; } // 更新元素数量 size--; @@ -89,20 +89,20 @@ public int remove(int index) { /* 列表扩容 */ public void extendCapacity() { // 新建一个长度为原数组 extendRatio 倍的新数组,并将原数组拷贝到新数组 - nums = Arrays.copyOf(nums, capacity() * extendRatio); + arr = Arrays.copyOf(arr, capacity() * extendRatio); // 更新列表容量 - capacity = nums.length; + capacity = arr.length; } /* 将列表转换为数组 */ public int[] toArray() { int size = size(); // 仅转换有效长度范围内的列表元素 - int[] nums = new int[size]; + int[] arr = new int[size]; for (int i = 0; i < size; i++) { - nums[i] = get(i); + arr[i] = get(i); } - return nums; + return arr; } } @@ -110,38 +110,38 @@ public class my_list { /* Driver Code */ public static void main(String[] args) { /* 初始化列表 */ - MyList list = new MyList(); + MyList nums = new MyList(); /* 尾部添加元素 */ - list.add(1); - list.add(3); - list.add(2); - list.add(5); - list.add(4); - System.out.println("列表 list = " + Arrays.toString(list.toArray()) + - " ,容量 = " + list.capacity() + " ,长度 = " + list.size()); + nums.add(1); + nums.add(3); + nums.add(2); + nums.add(5); + nums.add(4); + System.out.println("列表 nums = " + Arrays.toString(nums.toArray()) + + " ,容量 = " + nums.capacity() + " ,长度 = " + nums.size()); /* 中间插入元素 */ - list.insert(3, 6); - System.out.println("在索引 3 处插入数字 6 ,得到 list = " + Arrays.toString(list.toArray())); + nums.insert(3, 6); + System.out.println("在索引 3 处插入数字 6 ,得到 nums = " + Arrays.toString(nums.toArray())); /* 删除元素 */ - list.remove(3); - System.out.println("删除索引 3 处的元素,得到 list = " + Arrays.toString(list.toArray())); + nums.remove(3); + System.out.println("删除索引 3 处的元素,得到 nums = " + Arrays.toString(nums.toArray())); /* 访问元素 */ - int num = list.get(1); + int num = nums.get(1); System.out.println("访问索引 1 处的元素,得到 num = " + num); /* 更新元素 */ - list.set(1, 0); - System.out.println("将索引 1 处的元素更新为 0 ,得到 list = " + Arrays.toString(list.toArray())); + nums.set(1, 0); + System.out.println("将索引 1 处的元素更新为 0 ,得到 nums = " + Arrays.toString(nums.toArray())); /* 测试扩容机制 */ for (int i = 0; i < 10; i++) { // 在 i = 5 时,列表长度将超出列表容量,此时触发扩容机制 - list.add(i); + nums.add(i); } - System.out.println("扩容后的列表 list = " + Arrays.toString(list.toArray()) + - " ,容量 = " + list.capacity() + " ,长度 = " + list.size()); + System.out.println("扩容后的列表 nums = " + Arrays.toString(nums.toArray()) + + " ,容量 = " + nums.capacity() + " ,长度 = " + nums.size()); } } diff --git a/codes/javascript/chapter_array_and_linkedlist/list.js b/codes/javascript/chapter_array_and_linkedlist/list.js index 593917589e..e627a42773 100644 --- a/codes/javascript/chapter_array_and_linkedlist/list.js +++ b/codes/javascript/chapter_array_and_linkedlist/list.js @@ -5,54 +5,54 @@ */ /* 初始化列表 */ -const list = [1, 3, 2, 5, 4]; -console.log(`列表 list = ${list}`); +const nums = [1, 3, 2, 5, 4]; +console.log(`列表 nums = ${nums}`); /* 访问元素 */ -const num = list[1]; +const num = nums[1]; console.log(`访问索引 1 处的元素,得到 num = ${num}`); /* 更新元素 */ -list[1] = 0; -console.log(`将索引 1 处的元素更新为 0 ,得到 list = ${list}`); +nums[1] = 0; +console.log(`将索引 1 处的元素更新为 0 ,得到 nums = ${nums}`); /* 清空列表 */ -list.length = 0; -console.log(`清空列表后 list = ${list}`); +nums.length = 0; +console.log(`清空列表后 nums = ${nums}`); /* 尾部添加元素 */ -list.push(1); -list.push(3); -list.push(2); -list.push(5); -list.push(4); -console.log(`添加元素后 list = ${list}`); +nums.push(1); +nums.push(3); +nums.push(2); +nums.push(5); +nums.push(4); +console.log(`添加元素后 nums = ${nums}`); /* 中间插入元素 */ -list.splice(3, 0, 6); -console.log(`在索引 3 处插入数字 6 ,得到 list = ${list}`); +nums.splice(3, 0, 6); +console.log(`在索引 3 处插入数字 6 ,得到 nums = ${nums}`); /* 删除元素 */ -list.splice(3, 1); -console.log(`删除索引 3 处的元素,得到 list = ${list}`); +nums.splice(3, 1); +console.log(`删除索引 3 处的元素,得到 nums = ${nums}`); /* 通过索引遍历列表 */ let count = 0; -for (let i = 0; i < list.length; i++) { +for (let i = 0; i < nums.length; i++) { count++; } /* 直接遍历列表元素 */ count = 0; -for (const n of list) { +for (const n of nums) { count++; } /* 拼接两个列表 */ -const list1 = [6, 8, 7, 10, 9]; -list.push(...list1); -console.log(`将列表 list1 拼接到 list 之后,得到 list = ${list}`); +const nums1 = [6, 8, 7, 10, 9]; +nums.push(...nums1); +console.log(`将列表 nums1 拼接到 nums 之后,得到 nums = ${nums}`); /* 排序列表 */ -list.sort((a, b) => a - b); -console.log(`排序列表后 list = ${list}`); +nums.sort((a, b) => a - b); +console.log(`排序列表后 nums = ${nums}`); diff --git a/codes/javascript/chapter_array_and_linkedlist/my_list.js b/codes/javascript/chapter_array_and_linkedlist/my_list.js index 2ef56aabb9..3295346536 100644 --- a/codes/javascript/chapter_array_and_linkedlist/my_list.js +++ b/codes/javascript/chapter_array_and_linkedlist/my_list.js @@ -6,14 +6,14 @@ /* 列表类简易实现 */ class MyList { - #nums = new Array(); // 数组(存储列表元素) + #arr = new Array(); // 数组(存储列表元素) #capacity = 10; // 列表容量 #size = 0; // 列表长度(即当前元素数量) #extendRatio = 2; // 每次列表扩容的倍数 /* 构造方法 */ constructor() { - this.#nums = new Array(this.#capacity); + this.#arr = new Array(this.#capacity); } /* 获取列表长度(即当前元素数量)*/ @@ -30,13 +30,13 @@ class MyList { get(index) { // 索引如果越界则抛出异常,下同 if (index < 0 || index >= this.#size) throw new Error('索引越界'); - return this.#nums[index]; + return this.#arr[index]; } /* 更新元素 */ set(index, num) { if (index < 0 || index >= this.#size) throw new Error('索引越界'); - this.#nums[index] = num; + this.#arr[index] = num; } /* 尾部添加元素 */ @@ -46,7 +46,7 @@ class MyList { this.extendCapacity(); } // 将新元素添加到列表尾部 - this.#nums[this.#size] = num; + this.#arr[this.#size] = num; this.#size++; } @@ -59,20 +59,20 @@ class MyList { } // 将索引 index 以及之后的元素都向后移动一位 for (let j = this.#size - 1; j >= index; j--) { - this.#nums[j + 1] = this.#nums[j]; + this.#arr[j + 1] = this.#arr[j]; } // 更新元素数量 - this.#nums[index] = num; + this.#arr[index] = num; this.#size++; } /* 删除元素 */ remove(index) { if (index < 0 || index >= this.#size) throw new Error('索引越界'); - let num = this.#nums[index]; + let num = this.#arr[index]; // 将索引 index 之后的元素都向前移动一位 for (let j = index; j < this.#size - 1; j++) { - this.#nums[j] = this.#nums[j + 1]; + this.#arr[j] = this.#arr[j + 1]; } // 更新元素数量 this.#size--; @@ -83,59 +83,59 @@ class MyList { /* 列表扩容 */ extendCapacity() { // 新建一个长度为原数组 extendRatio 倍的新数组,并将原数组拷贝到新数组 - this.#nums = this.#nums.concat( + this.#arr = this.#arr.concat( new Array(this.capacity() * (this.#extendRatio - 1)) ); // 更新列表容量 - this.#capacity = this.#nums.length; + this.#capacity = this.#arr.length; } /* 将列表转换为数组 */ toArray() { let size = this.size(); // 仅转换有效长度范围内的列表元素 - const nums = new Array(size); + const arr = new Array(size); for (let i = 0; i < size; i++) { - nums[i] = this.get(i); + arr[i] = this.get(i); } - return nums; + return arr; } } /* Driver Code */ /* 初始化列表 */ -const list = new MyList(); +const nums = new MyList(); /* 尾部添加元素 */ -list.add(1); -list.add(3); -list.add(2); -list.add(5); -list.add(4); +nums.add(1); +nums.add(3); +nums.add(2); +nums.add(5); +nums.add(4); console.log( - `列表 list = ${list.toArray()} ,容量 = ${list.capacity()} ,长度 = ${list.size()}` + `列表 nums = ${nums.toArray()} ,容量 = ${nums.capacity()} ,长度 = ${nums.size()}` ); /* 中间插入元素 */ -list.insert(3, 6); -console.log(`在索引 3 处插入数字 6 ,得到 list = ${list.toArray()}`); +nums.insert(3, 6); +console.log(`在索引 3 处插入数字 6 ,得到 nums = ${nums.toArray()}`); /* 删除元素 */ -list.remove(3); -console.log(`删除索引 3 处的元素,得到 list = ${list.toArray()}`); +nums.remove(3); +console.log(`删除索引 3 处的元素,得到 nums = ${nums.toArray()}`); /* 访问元素 */ -const num = list.get(1); +const num = nums.get(1); console.log(`访问索引 1 处的元素,得到 num = ${num}`); /* 更新元素 */ -list.set(1, 0); -console.log(`将索引 1 处的元素更新为 0 ,得到 list = ${list.toArray()}`); +nums.set(1, 0); +console.log(`将索引 1 处的元素更新为 0 ,得到 nums = ${nums.toArray()}`); /* 测试扩容机制 */ for (let i = 0; i < 10; i++) { // 在 i = 5 时,列表长度将超出列表容量,此时触发扩容机制 - list.add(i); + nums.add(i); } console.log( - `扩容后的列表 list = ${list.toArray()} ,容量 = ${list.capacity()} ,长度 = ${list.size()}` + `扩容后的列表 nums = ${nums.toArray()} ,容量 = ${nums.capacity()} ,长度 = ${nums.size()}` ); diff --git a/codes/python/chapter_array_and_linkedlist/list.py b/codes/python/chapter_array_and_linkedlist/list.py index dac7c1f951..468f2a08c6 100644 --- a/codes/python/chapter_array_and_linkedlist/list.py +++ b/codes/python/chapter_array_and_linkedlist/list.py @@ -7,52 +7,53 @@ """Driver Code""" if __name__ == "__main__": # 初始化列表 - arr = [1, 3, 2, 5, 4] - print("列表 arr =", arr) + nums: list[int] = [1, 3, 2, 5, 4] + print("\n列表 nums =", nums) # 访问元素 - num: int = arr[1] - print("访问索引 1 处的元素,得到 num =", num) + x: int = nums[1] + print("\n访问索引 1 处的元素,得到 x =", x) # 更新元素 - arr[1] = 0 - print("将索引 1 处的元素更新为 0 ,得到 arr =", arr) + nums[1] = 0 + print("\n将索引 1 处的元素更新为 0 ,得到 nums =", nums) # 清空列表 - arr.clear() - print("清空列表后 arr =", arr) + nums.clear() + print("\n清空列表后 nums =", nums) # 尾部添加元素 - arr.append(1) - arr.append(3) - arr.append(2) - arr.append(5) - arr.append(4) - print("添加元素后 arr =", arr) + nums.append(1) + nums.append(3) + nums.append(2) + nums.append(5) + nums.append(4) + print("\n添加元素后 nums =", nums) # 中间插入元素 - arr.insert(3, 6) - print("在索引 3 处插入数字 6 ,得到 arr =", arr) + nums.insert(3, 6) + print("\n在索引 3 处插入数字 6 ,得到 nums =", nums) # 删除元素 - arr.pop(3) - print("删除索引 3 处的元素,得到 arr =", arr) - - # 通过索引遍历列表 - count = 0 - for i in range(len(arr)): - count += 1 - - # 直接遍历列表元素 - count = 0 - for n in arr: - count += 1 + nums.pop(3) + print("\n删除索引 3 处的元素,得到 nums =", nums) + + # 遍历列表 + tmp = [] + for i in range(len(nums)): + tmp.append(nums[i]) + print(f"\n通过索引遍历列表得到 tmp = {tmp}") + + tmp.clear() + for num in nums: + tmp.append(num) + print(f"\n直接遍历列表元素得到 tmp = {tmp}") # 拼接两个列表 - arr1 = [6, 8, 7, 10, 9] - arr += arr1 - print("将列表 arr1 拼接到 arr 之后,得到 arr =", arr) + nums1 = [6, 8, 7, 10, 9] + nums += nums1 + print("\n将列表 nums1 拼接到 nums 之后,得到 nums =", nums) # 排序列表 - arr.sort() - print("排序列表后 arr =", arr) + nums.sort() + print("\n排序列表后 nums =", nums) diff --git a/codes/python/chapter_array_and_linkedlist/my_list.py b/codes/python/chapter_array_and_linkedlist/my_list.py index d7b62d1d5f..754f30acc3 100644 --- a/codes/python/chapter_array_and_linkedlist/my_list.py +++ b/codes/python/chapter_array_and_linkedlist/my_list.py @@ -1,5 +1,5 @@ """ -File: my_list.py +File: nums.py Created Time: 2022-11-25 Author: Krahets (krahets@163.com) """ @@ -11,7 +11,7 @@ class MyList: def __init__(self): """构造方法""" self.__capacity: int = 10 # 列表容量 - self.__nums: list[int] = [0] * self.__capacity # 数组(存储列表元素) + self.__arr: list[int] = [0] * self.__capacity # 数组(存储列表元素) self.__size: int = 0 # 列表长度(即当前元素数量) self.__extend_ratio: int = 2 # 每次列表扩容的倍数 @@ -28,20 +28,20 @@ def get(self, index: int) -> int: # 索引如果越界则抛出异常,下同 if index < 0 or index >= self.__size: raise IndexError("索引越界") - return self.__nums[index] + return self.__arr[index] def set(self, num: int, index: int): """更新元素""" if index < 0 or index >= self.__size: raise IndexError("索引越界") - self.__nums[index] = num + self.__arr[index] = num def add(self, num: int): """尾部添加元素""" # 元素数量超出容量时,触发扩容机制 if self.size() == self.capacity(): self.extend_capacity() - self.__nums[self.__size] = num + self.__arr[self.__size] = num self.__size += 1 def insert(self, num: int, index: int): @@ -53,8 +53,8 @@ def insert(self, num: int, index: int): self.extend_capacity() # 将索引 index 以及之后的元素都向后移动一位 for j in range(self.__size - 1, index - 1, -1): - self.__nums[j + 1] = self.__nums[j] - self.__nums[index] = num + self.__arr[j + 1] = self.__arr[j] + self.__arr[index] = num # 更新元素数量 self.__size += 1 @@ -62,10 +62,10 @@ def remove(self, index: int) -> int: """删除元素""" if index < 0 or index >= self.__size: raise IndexError("索引越界") - num = self.__nums[index] + num = self.__arr[index] # 索引 i 之后的元素都向前移动一位 for j in range(index, self.__size - 1): - self.__nums[j] = self.__nums[j + 1] + self.__arr[j] = self.__arr[j + 1] # 更新元素数量 self.__size -= 1 # 返回被删除元素 @@ -74,49 +74,49 @@ def remove(self, index: int) -> int: def extend_capacity(self): """列表扩容""" # 新建一个长度为原数组 __extend_ratio 倍的新数组,并将原数组拷贝到新数组 - self.__nums = self.__nums + [0] * self.capacity() * (self.__extend_ratio - 1) + self.__arr = self.__arr + [0] * self.capacity() * (self.__extend_ratio - 1) # 更新列表容量 - self.__capacity = len(self.__nums) + self.__capacity = len(self.__arr) def to_array(self) -> list[int]: """返回有效长度的列表""" - return self.__nums[: self.__size] + return self.__arr[: self.__size] """Driver Code""" if __name__ == "__main__": # 初始化列表 - my_list = MyList() + nums = MyList() # 尾部添加元素 - my_list.add(1) - my_list.add(3) - my_list.add(2) - my_list.add(5) - my_list.add(4) + nums.add(1) + nums.add(3) + nums.add(2) + nums.add(5) + nums.add(4) print( - f"列表 my_list = {my_list.to_array()} ,容量 = {my_list.capacity()} ,长度 = {my_list.size()}" + f"列表 nums = {nums.to_array()} ,容量 = {nums.capacity()} ,长度 = {nums.size()}" ) # 中间插入元素 - my_list.insert(6, index=3) - print("在索引 3 处插入数字 6 ,得到 my_list =", my_list.to_array()) + nums.insert(6, index=3) + print("在索引 3 处插入数字 6 ,得到 nums =", nums.to_array()) # 删除元素 - my_list.remove(3) - print("删除索引 3 处的元素,得到 my_list =", my_list.to_array()) + nums.remove(3) + print("删除索引 3 处的元素,得到 nums =", nums.to_array()) # 访问元素 - num = my_list.get(1) + num = nums.get(1) print("访问索引 1 处的元素,得到 num =", num) # 更新元素 - my_list.set(0, 1) - print("将索引 1 处的元素更新为 0 ,得到 my_list =", my_list.to_array()) + nums.set(0, 1) + print("将索引 1 处的元素更新为 0 ,得到 nums =", nums.to_array()) # 测试扩容机制 for i in range(10): # 在 i = 5 时,列表长度将超出列表容量,此时触发扩容机制 - my_list.add(i) + nums.add(i) print( - f"扩容后的列表 {my_list.to_array()} ,容量 = {my_list.capacity()} ,长度 = {my_list.size()}" + f"扩容后的列表 {nums.to_array()} ,容量 = {nums.capacity()} ,长度 = {nums.size()}" ) diff --git a/codes/rust/chapter_array_and_linkedlist/list.rs b/codes/rust/chapter_array_and_linkedlist/list.rs index 2f3140b206..241c71094f 100644 --- a/codes/rust/chapter_array_and_linkedlist/list.rs +++ b/codes/rust/chapter_array_and_linkedlist/list.rs @@ -9,67 +9,67 @@ include!("../include/include.rs"); /* Driver Code */ fn main() { // 初始化列表 - let mut list: Vec = vec![ 1, 3, 2, 5, 4 ]; - print!("列表 list = "); - print_util::print_array(&list); + let mut nums: Vec = vec![ 1, 3, 2, 5, 4 ]; + print!("列表 nums = "); + print_util::print_array(&nums); // 访问元素 - let num = list[1]; + let num = nums[1]; println!("\n访问索引 1 处的元素,得到 num = {num}"); // 更新元素 - list[1] = 0; - print!("将索引 1 处的元素更新为 0 ,得到 list = "); - print_util::print_array(&list); + nums[1] = 0; + print!("将索引 1 处的元素更新为 0 ,得到 nums = "); + print_util::print_array(&nums); // 清空列表 - list.clear(); - print!("\n清空列表后 list = "); - print_util::print_array(&list); + nums.clear(); + print!("\n清空列表后 nums = "); + print_util::print_array(&nums); // 尾部添加元素 - list.push(1); - list.push(3); - list.push(2); - list.push(5); - list.push(4); - print!("\n添加元素后 list = "); - print_util::print_array(&list); + nums.push(1); + nums.push(3); + nums.push(2); + nums.push(5); + nums.push(4); + print!("\n添加元素后 nums = "); + print_util::print_array(&nums); // 中间插入元素 - list.insert(3, 6); - print!("\n在索引 3 处插入数字 6 ,得到 list = "); - print_util::print_array(&list); + nums.insert(3, 6); + print!("\n在索引 3 处插入数字 6 ,得到 nums = "); + print_util::print_array(&nums); // 删除元素 - list.remove(3); - print!("\n删除索引 3 处的元素,得到 list = "); - print_util::print_array(&list); + nums.remove(3); + print!("\n删除索引 3 处的元素,得到 nums = "); + print_util::print_array(&nums); // 通过索引遍历列表 let mut _count = 0; - for _ in 0..list.len() { + for _ in 0..nums.len() { _count += 1; } // 直接遍历列表元素 _count = 0; - for _n in &list { + for _n in &nums { _count += 1; } // 或者 - // list.iter().for_each(|_| _count += 1); - // let _count = list.iter().fold(0, |_count, _| _count + 1); + // nums.iter().for_each(|_| _count += 1); + // let _count = nums.iter().fold(0, |_count, _| _count + 1); // 拼接两个列表 - let mut list1 = vec![ 6, 8, 7, 10, 9 ]; - list.append(&mut list1); // append(移动) 之后 list1 为空! - // list.extend(&list1); // extend(借用) list1 能继续使用 - print!("\n将列表 list1 拼接到 list 之后,得到 list = "); - print_util::print_array(&list); + let mut nums1 = vec![ 6, 8, 7, 10, 9 ]; + nums.append(&mut nums1); // append(移动) 之后 nums1 为空! + // nums.extend(&nums1); // extend(借用) nums1 能继续使用 + print!("\n将列表 nums1 拼接到 nums 之后,得到 nums = "); + print_util::print_array(&nums); // 排序列表 - list.sort(); - print!("\n排序列表后 list = "); - print_util::print_array(&list); + nums.sort(); + print!("\n排序列表后 nums = "); + print_util::print_array(&nums); } diff --git a/codes/rust/chapter_array_and_linkedlist/my_list.rs b/codes/rust/chapter_array_and_linkedlist/my_list.rs index 6d22d9fb72..2e30767193 100644 --- a/codes/rust/chapter_array_and_linkedlist/my_list.rs +++ b/codes/rust/chapter_array_and_linkedlist/my_list.rs @@ -9,7 +9,7 @@ include!("../include/include.rs"); /* 列表类简易实现 */ #[allow(dead_code)] struct MyList { - nums: Vec, // 数组(存储列表元素) + arr: Vec, // 数组(存储列表元素) capacity: usize, // 列表容量 size: usize, // 列表长度(即当前元素数量) extend_ratio: usize, // 每次列表扩容的倍数 @@ -22,7 +22,7 @@ impl MyList { let mut vec = Vec::new(); vec.resize(capacity, 0); Self { - nums: vec, + arr: vec, capacity, size: 0, extend_ratio: 2, @@ -43,13 +43,13 @@ impl MyList { pub fn get(&self, index: usize) -> i32 { // 索引如果越界则抛出异常,下同 if index < 0 || index >= self.size {panic!("索引越界")}; - return self.nums[index]; + return self.arr[index]; } /* 更新元素 */ pub fn set(&mut self, index: usize, num: i32) { if index < 0 || index >= self.size {panic!("索引越界")}; - self.nums[index] = num; + self.arr[index] = num; } /* 尾部添加元素 */ @@ -58,7 +58,7 @@ impl MyList { if self.size == self.capacity() { self.extend_capacity(); } - self.nums[self.size] = num; + self.arr[self.size] = num; // 更新元素数量 self.size += 1; } @@ -72,9 +72,9 @@ impl MyList { } // 将索引 index 以及之后的元素都向后移动一位 for j in (index..self.size).rev() { - self.nums[j + 1] = self.nums[j]; + self.arr[j + 1] = self.arr[j]; } - self.nums[index] = num; + self.arr[index] = num; // 更新元素数量 self.size += 1; } @@ -82,10 +82,10 @@ impl MyList { /* 删除元素 */ pub fn remove(&mut self, index: usize) -> i32 { if index < 0 || index >= self.size() {panic!("索引越界")}; - let num = self.nums[index]; + let num = self.arr[index]; // 将索引 index 之后的元素都向前移动一位 for j in (index..self.size - 1) { - self.nums[j] = self.nums[j + 1]; + self.arr[j] = self.arr[j + 1]; } // 更新元素数量 self.size -= 1; @@ -97,7 +97,7 @@ impl MyList { pub fn extend_capacity(&mut self) { // 新建一个长度为原数组 extend_ratio 倍的新数组,并将原数组拷贝到新数组 let new_capacity = self.capacity * self.extend_ratio; - self.nums.resize(new_capacity, 0); + self.arr.resize(new_capacity, 0); // 更新列表容量 self.capacity = new_capacity; } @@ -105,53 +105,53 @@ impl MyList { /* 将列表转换为数组 */ pub fn to_array(&mut self) -> Vec { // 仅转换有效长度范围内的列表元素 - let mut nums = Vec::new(); + let mut arr = Vec::new(); for i in 0..self.size { - nums.push(self.get(i)); + arr.push(self.get(i)); } - nums + arr } } /* Driver Code */ fn main() { /* 初始化列表 */ - let mut list = MyList::new(10); + let mut nums = MyList::new(10); /* 尾部添加元素 */ - list.add(1); - list.add(3); - list.add(2); - list.add(5); - list.add(4); - print!("列表 list = "); - print_util::print_array(&list.to_array()); - print!(" ,容量 = {} ,长度 = {}", list.capacity(), list.size()); + nums.add(1); + nums.add(3); + nums.add(2); + nums.add(5); + nums.add(4); + print!("列表 nums = "); + print_util::print_array(&nums.to_array()); + print!(" ,容量 = {} ,长度 = {}", nums.capacity(), nums.size()); /* 中间插入元素 */ - list.insert(3, 6); - print!("\n在索引 3 处插入数字 6 ,得到 list = "); - print_util::print_array(&list.to_array()); + nums.insert(3, 6); + print!("\n在索引 3 处插入数字 6 ,得到 nums = "); + print_util::print_array(&nums.to_array()); /* 删除元素 */ - list.remove(3); - print!("\n删除索引 3 处的元素,得到 list = "); - print_util::print_array(&list.to_array()); + nums.remove(3); + print!("\n删除索引 3 处的元素,得到 nums = "); + print_util::print_array(&nums.to_array()); /* 访问元素 */ - let num = list.get(1); + let num = nums.get(1); println!("\n访问索引 1 处的元素,得到 num = {num}"); /* 更新元素 */ - list.set(1, 0); - print!("将索引 1 处的元素更新为 0 ,得到 list = "); - print_util::print_array(&list.to_array()); + nums.set(1, 0); + print!("将索引 1 处的元素更新为 0 ,得到 nums = "); + print_util::print_array(&nums.to_array()); /* 测试扩容机制 */ for i in 0..10 { // 在 i = 5 时,列表长度将超出列表容量,此时触发扩容机制 - list.add(i); + nums.add(i); } - print!("\n扩容后的列表 list = "); - print_util::print_array(&list.to_array()); - print!(" ,容量 = {} ,长度 = {}", list.capacity(), list.size()); + print!("\n扩容后的列表 nums = "); + print_util::print_array(&nums.to_array()); + print!(" ,容量 = {} ,长度 = {}", nums.capacity(), nums.size()); } diff --git a/codes/swift/chapter_array_and_linkedlist/list.swift b/codes/swift/chapter_array_and_linkedlist/list.swift index 27801d13fc..269cbce12b 100644 --- a/codes/swift/chapter_array_and_linkedlist/list.swift +++ b/codes/swift/chapter_array_and_linkedlist/list.swift @@ -9,56 +9,56 @@ enum List { /* Driver Code */ static func main() { /* 初始化列表 */ - var list = [1, 3, 2, 5, 4] - print("列表 list = \(list)") + var nums = [1, 3, 2, 5, 4] + print("列表 nums = \(nums)") /* 访问元素 */ - let num = list[1] + let num = nums[1] print("访问索引 1 处的元素,得到 num = \(num)") /* 更新元素 */ - list[1] = 0 - print("将索引 1 处的元素更新为 0 ,得到 list = \(list)") + nums[1] = 0 + print("将索引 1 处的元素更新为 0 ,得到 nums = \(nums)") /* 清空列表 */ - list.removeAll() - print("清空列表后 list = \(list)") + nums.removeAll() + print("清空列表后 nums = \(nums)") /* 尾部添加元素 */ - list.append(1) - list.append(3) - list.append(2) - list.append(5) - list.append(4) - print("添加元素后 list = \(list)") + nums.append(1) + nums.append(3) + nums.append(2) + nums.append(5) + nums.append(4) + print("添加元素后 nums = \(nums)") /* 中间插入元素 */ - list.insert(6, at: 3) - print("在索引 3 处插入数字 6 ,得到 list = \(list)") + nums.insert(6, at: 3) + print("在索引 3 处插入数字 6 ,得到 nums = \(nums)") /* 删除元素 */ - list.remove(at: 3) - print("删除索引 3 处的元素,得到 list = \(list)") + nums.remove(at: 3) + print("删除索引 3 处的元素,得到 nums = \(nums)") /* 通过索引遍历列表 */ var count = 0 - for _ in list.indices { + for _ in nums.indices { count += 1 } /* 直接遍历列表元素 */ count = 0 - for _ in list { + for _ in nums { count += 1 } /* 拼接两个列表 */ - let list1 = [6, 8, 7, 10, 9] - list.append(contentsOf: list1) - print("将列表 list1 拼接到 list 之后,得到 list = \(list)") + let nums1 = [6, 8, 7, 10, 9] + nums.append(contentsOf: nums1) + print("将列表 nums1 拼接到 nums 之后,得到 nums = \(nums)") /* 排序列表 */ - list.sort() - print("排序列表后 list = \(list)") + nums.sort() + print("排序列表后 nums = \(nums)") } } diff --git a/codes/swift/chapter_array_and_linkedlist/my_list.swift b/codes/swift/chapter_array_and_linkedlist/my_list.swift index 2f5dfeb21f..c34b72f2d2 100644 --- a/codes/swift/chapter_array_and_linkedlist/my_list.swift +++ b/codes/swift/chapter_array_and_linkedlist/my_list.swift @@ -6,14 +6,14 @@ /* 列表类简易实现 */ class MyList { - private var nums: [Int] // 数组(存储列表元素) + private var arr: [Int] // 数组(存储列表元素) private var _capacity = 10 // 列表容量 private var _size = 0 // 列表长度(即当前元素数量) private let extendRatio = 2 // 每次列表扩容的倍数 /* 构造方法 */ init() { - nums = Array(repeating: 0, count: _capacity) + arr = Array(repeating: 0, count: _capacity) } /* 获取列表长度(即当前元素数量)*/ @@ -32,7 +32,7 @@ class MyList { if index < 0 || index >= _size { fatalError("索引越界") } - return nums[index] + return arr[index] } /* 更新元素 */ @@ -40,7 +40,7 @@ class MyList { if index < 0 || index >= _size { fatalError("索引越界") } - nums[index] = num + arr[index] = num } /* 尾部添加元素 */ @@ -49,7 +49,7 @@ class MyList { if _size == _capacity { extendCapacity() } - nums[_size] = num + arr[_size] = num // 更新元素数量 _size += 1 } @@ -65,9 +65,9 @@ class MyList { } // 将索引 index 以及之后的元素都向后移动一位 for j in sequence(first: _size - 1, next: { $0 >= index + 1 ? $0 - 1 : nil }) { - nums[j + 1] = nums[j] + arr[j + 1] = arr[j] } - nums[index] = num + arr[index] = num // 更新元素数量 _size += 1 } @@ -78,10 +78,10 @@ class MyList { if index < 0 || index >= _size { fatalError("索引越界") } - let num = nums[index] + let num = arr[index] // 将索引 index 之后的元素都向前移动一位 for j in index ..< (_size - 1) { - nums[j] = nums[j + 1] + arr[j] = arr[j + 1] } // 更新元素数量 _size -= 1 @@ -92,18 +92,18 @@ class MyList { /* 列表扩容 */ func extendCapacity() { // 新建一个长度为原数组 extendRatio 倍的新数组,并将原数组拷贝到新数组 - nums = nums + Array(repeating: 0, count: _capacity * (extendRatio - 1)) + arr = arr + Array(repeating: 0, count: _capacity * (extendRatio - 1)) // 更新列表容量 - _capacity = nums.count + _capacity = arr.count } /* 将列表转换为数组 */ func toArray() -> [Int] { - var nums = Array(repeating: 0, count: _size) + var arr = Array(repeating: 0, count: _size) for i in 0 ..< _size { - nums[i] = get(index: i) + arr[i] = get(index: i) } - return nums + return arr } } @@ -112,36 +112,36 @@ enum _MyList { /* Driver Code */ static func main() { /* 初始化列表 */ - let list = MyList() + let nums = MyList() /* 尾部添加元素 */ - list.add(num: 1) - list.add(num: 3) - list.add(num: 2) - list.add(num: 5) - list.add(num: 4) - print("列表 list = \(list.toArray()) ,容量 = \(list.capacity()) ,长度 = \(list.size())") + nums.add(num: 1) + nums.add(num: 3) + nums.add(num: 2) + nums.add(num: 5) + nums.add(num: 4) + print("列表 nums = \(nums.toArray()) ,容量 = \(nums.capacity()) ,长度 = \(nums.size())") /* 中间插入元素 */ - list.insert(index: 3, num: 6) - print("在索引 3 处插入数字 6 ,得到 list = \(list.toArray())") + nums.insert(index: 3, num: 6) + print("在索引 3 处插入数字 6 ,得到 nums = \(nums.toArray())") /* 删除元素 */ - list.remove(index: 3) - print("删除索引 3 处的元素,得到 list = \(list.toArray())") + nums.remove(index: 3) + print("删除索引 3 处的元素,得到 nums = \(nums.toArray())") /* 访问元素 */ - let num = list.get(index: 1) + let num = nums.get(index: 1) print("访问索引 1 处的元素,得到 num = \(num)") /* 更新元素 */ - list.set(index: 1, num: 0) - print("将索引 1 处的元素更新为 0 ,得到 list = \(list.toArray())") + nums.set(index: 1, num: 0) + print("将索引 1 处的元素更新为 0 ,得到 nums = \(nums.toArray())") /* 测试扩容机制 */ for i in 0 ..< 10 { // 在 i = 5 时,列表长度将超出列表容量,此时触发扩容机制 - list.add(num: i) + nums.add(num: i) } - print("扩容后的列表 list = \(list.toArray()) ,容量 = \(list.capacity()) ,长度 = \(list.size())") + print("扩容后的列表 nums = \(nums.toArray()) ,容量 = \(nums.capacity()) ,长度 = \(nums.size())") } } diff --git a/codes/typescript/chapter_array_and_linkedlist/list.ts b/codes/typescript/chapter_array_and_linkedlist/list.ts index e1d2d518a8..93fbbb32b6 100644 --- a/codes/typescript/chapter_array_and_linkedlist/list.ts +++ b/codes/typescript/chapter_array_and_linkedlist/list.ts @@ -5,56 +5,56 @@ */ /* 初始化列表 */ -const list: number[] = [1, 3, 2, 5, 4]; -console.log(`列表 list = ${list}`); +const nums: number[] = [1, 3, 2, 5, 4]; +console.log(`列表 nums = ${nums}`); /* 访问元素 */ -const num: number = list[1]; +const num: number = nums[1]; console.log(`访问索引 1 处的元素,得到 num = ${num}`); /* 更新元素 */ -list[1] = 0; -console.log(`将索引 1 处的元素更新为 0 ,得到 list = ${list}`); +nums[1] = 0; +console.log(`将索引 1 处的元素更新为 0 ,得到 nums = ${nums}`); /* 清空列表 */ -list.length = 0; -console.log(`清空列表后 list = ${list}`); +nums.length = 0; +console.log(`清空列表后 nums = ${nums}`); /* 尾部添加元素 */ -list.push(1); -list.push(3); -list.push(2); -list.push(5); -list.push(4); -console.log(`添加元素后 list = ${list}`); +nums.push(1); +nums.push(3); +nums.push(2); +nums.push(5); +nums.push(4); +console.log(`添加元素后 nums = ${nums}`); /* 中间插入元素 */ -list.splice(3, 0, 6); -console.log(`在索引 3 处插入数字 6 ,得到 list = ${list}`); +nums.splice(3, 0, 6); +console.log(`在索引 3 处插入数字 6 ,得到 nums = ${nums}`); /* 删除元素 */ -list.splice(3, 1); -console.log(`删除索引 3 处的元素,得到 list = ${list}`); +nums.splice(3, 1); +console.log(`删除索引 3 处的元素,得到 nums = ${nums}`); /* 通过索引遍历列表 */ let count = 0; -for (let i = 0; i < list.length; i++) { +for (let i = 0; i < nums.length; i++) { count++; } /* 直接遍历列表元素 */ count = 0; -for (const n of list) { +for (const n of nums) { count++; } /* 拼接两个列表 */ -const list1: number[] = [6, 8, 7, 10, 9]; -list.push(...list1); -console.log(`将列表 list1 拼接到 list 之后,得到 list = ${list}`); +const nums1: number[] = [6, 8, 7, 10, 9]; +nums.push(...nums1); +console.log(`将列表 nums1 拼接到 nums 之后,得到 nums = ${nums}`); /* 排序列表 */ -list.sort((a, b) => a - b); -console.log(`排序列表后 list = ${list}`); +nums.sort((a, b) => a - b); +console.log(`排序列表后 nums = ${nums}`); export {}; diff --git a/codes/typescript/chapter_array_and_linkedlist/my_list.ts b/codes/typescript/chapter_array_and_linkedlist/my_list.ts index 5c1c3caa88..3f02cc417b 100644 --- a/codes/typescript/chapter_array_and_linkedlist/my_list.ts +++ b/codes/typescript/chapter_array_and_linkedlist/my_list.ts @@ -6,14 +6,14 @@ /* 列表类简易实现 */ class MyList { - private nums: Array; // 数组(存储列表元素) + private arr: Array; // 数组(存储列表元素) private _capacity: number = 10; // 列表容量 private _size: number = 0; // 列表长度(即当前元素数量) private extendRatio: number = 2; // 每次列表扩容的倍数 /* 构造方法 */ constructor() { - this.nums = new Array(this._capacity); + this.arr = new Array(this._capacity); } /* 获取列表长度(即当前元素数量)*/ @@ -30,13 +30,13 @@ class MyList { public get(index: number): number { // 索引如果越界则抛出异常,下同 if (index < 0 || index >= this._size) throw new Error('索引越界'); - return this.nums[index]; + return this.arr[index]; } /* 更新元素 */ public set(index: number, num: number): void { if (index < 0 || index >= this._size) throw new Error('索引越界'); - this.nums[index] = num; + this.arr[index] = num; } /* 尾部添加元素 */ @@ -44,7 +44,7 @@ class MyList { // 如果长度等于容量,则需要扩容 if (this._size === this._capacity) this.extendCapacity(); // 将新元素添加到列表尾部 - this.nums[this._size] = num; + this.arr[this._size] = num; this._size++; } @@ -57,20 +57,20 @@ class MyList { } // 将索引 index 以及之后的元素都向后移动一位 for (let j = this._size - 1; j >= index; j--) { - this.nums[j + 1] = this.nums[j]; + this.arr[j + 1] = this.arr[j]; } // 更新元素数量 - this.nums[index] = num; + this.arr[index] = num; this._size++; } /* 删除元素 */ public remove(index: number): number { if (index < 0 || index >= this._size) throw new Error('索引越界'); - let num = this.nums[index]; + let num = this.arr[index]; // 将索引 index 之后的元素都向前移动一位 for (let j = index; j < this._size - 1; j++) { - this.nums[j] = this.nums[j + 1]; + this.arr[j] = this.arr[j + 1]; } // 更新元素数量 this._size--; @@ -81,61 +81,61 @@ class MyList { /* 列表扩容 */ public extendCapacity(): void { // 新建一个长度为 size 的数组,并将原数组拷贝到新数组 - this.nums = this.nums.concat( + this.arr = this.arr.concat( new Array(this.capacity() * (this.extendRatio - 1)) ); // 更新列表容量 - this._capacity = this.nums.length; + this._capacity = this.arr.length; } /* 将列表转换为数组 */ public toArray(): number[] { let size = this.size(); // 仅转换有效长度范围内的列表元素 - const nums = new Array(size); + const arr = new Array(size); for (let i = 0; i < size; i++) { - nums[i] = this.get(i); + arr[i] = this.get(i); } - return nums; + return arr; } } /* Driver Code */ /* 初始化列表 */ -const list = new MyList(); +const nums = new MyList(); /* 尾部添加元素 */ -list.add(1); -list.add(3); -list.add(2); -list.add(5); -list.add(4); +nums.add(1); +nums.add(3); +nums.add(2); +nums.add(5); +nums.add(4); console.log( - `列表 list = ${list.toArray()} ,容量 = ${list.capacity()} ,长度 = ${list.size()}` + `列表 nums = ${nums.toArray()} ,容量 = ${nums.capacity()} ,长度 = ${nums.size()}` ); /* 中间插入元素 */ -list.insert(3, 6); -console.log(`在索引 3 处插入数字 6 ,得到 list = ${list.toArray()}`); +nums.insert(3, 6); +console.log(`在索引 3 处插入数字 6 ,得到 nums = ${nums.toArray()}`); /* 删除元素 */ -list.remove(3); -console.log(`删除索引 3 处的元素,得到 list = ${list.toArray()}`); +nums.remove(3); +console.log(`删除索引 3 处的元素,得到 nums = ${nums.toArray()}`); /* 访问元素 */ -const num = list.get(1); +const num = nums.get(1); console.log(`访问索引 1 处的元素,得到 num = ${num}`); /* 更新元素 */ -list.set(1, 0); -console.log(`将索引 1 处的元素更新为 0 ,得到 list = ${list.toArray()}`); +nums.set(1, 0); +console.log(`将索引 1 处的元素更新为 0 ,得到 nums = ${nums.toArray()}`); /* 测试扩容机制 */ for (let i = 0; i < 10; i++) { // 在 i = 5 时,列表长度将超出列表容量,此时触发扩容机制 - list.add(i); + nums.add(i); } console.log( - `扩容后的列表 list = ${list.toArray()} ,容量 = ${list.capacity()} ,长度 = ${list.size()}` + `扩容后的列表 nums = ${nums.toArray()} ,容量 = ${nums.capacity()} ,长度 = ${nums.size()}` ); export {}; diff --git a/codes/zig/chapter_array_and_linkedlist/list.zig b/codes/zig/chapter_array_and_linkedlist/list.zig index b9b0bd9e4d..9c81da4c47 100644 --- a/codes/zig/chapter_array_and_linkedlist/list.zig +++ b/codes/zig/chapter_array_and_linkedlist/list.zig @@ -8,71 +8,71 @@ const inc = @import("include"); // Driver Code pub fn main() !void { // 初始化列表 - var list = std.ArrayList(i32).init(std.heap.page_allocator); + var nums = std.ArrayList(i32).init(std.heap.page_allocator); // 延迟释放内存 - defer list.deinit(); - try list.appendSlice(&[_]i32{ 1, 3, 2, 5, 4 }); - std.debug.print("列表 list = ", .{}); - inc.PrintUtil.printList(i32, list); + defer nums.deinit(); + try nums.appendSlice(&[_]i32{ 1, 3, 2, 5, 4 }); + std.debug.print("列表 nums = ", .{}); + inc.PrintUtil.printList(i32, nums); // 访问元素 - var num = list.items[1]; + var num = nums.items[1]; std.debug.print("\n访问索引 1 处的元素,得到 num = {}", .{num}); // 更新元素 - list.items[1] = 0; - std.debug.print("\n将索引 1 处的元素更新为 0 ,得到 list = ", .{}); - inc.PrintUtil.printList(i32, list); + nums.items[1] = 0; + std.debug.print("\n将索引 1 处的元素更新为 0 ,得到 nums = ", .{}); + inc.PrintUtil.printList(i32, nums); // 清空列表 - list.clearRetainingCapacity(); - std.debug.print("\n清空列表后 list = ", .{}); - inc.PrintUtil.printList(i32, list); + nums.clearRetainingCapacity(); + std.debug.print("\n清空列表后 nums = ", .{}); + inc.PrintUtil.printList(i32, nums); // 尾部添加元素 - try list.append(1); - try list.append(3); - try list.append(2); - try list.append(5); - try list.append(4); - std.debug.print("\n添加元素后 list = ", .{}); - inc.PrintUtil.printList(i32, list); + try nums.append(1); + try nums.append(3); + try nums.append(2); + try nums.append(5); + try nums.append(4); + std.debug.print("\n添加元素后 nums = ", .{}); + inc.PrintUtil.printList(i32, nums); // 中间插入元素 - try list.insert(3, 6); - std.debug.print("\n在索引 3 处插入数字 6 ,得到 list = ", .{}); - inc.PrintUtil.printList(i32, list); + try nums.insert(3, 6); + std.debug.print("\n在索引 3 处插入数字 6 ,得到 nums = ", .{}); + inc.PrintUtil.printList(i32, nums); // 删除元素 - _ = list.orderedRemove(3); - std.debug.print("\n删除索引 3 处的元素,得到 list = ", .{}); - inc.PrintUtil.printList(i32, list); + _ = nums.orderedRemove(3); + std.debug.print("\n删除索引 3 处的元素,得到 nums = ", .{}); + inc.PrintUtil.printList(i32, nums); // 通过索引遍历列表 var count: i32 = 0; var i: i32 = 0; - while (i < list.items.len) : (i += 1) { + while (i < nums.items.len) : (i += 1) { count += 1; } // 直接遍历列表元素 count = 0; - for (list.items) |_| { + for (nums.items) |_| { count += 1; } // 拼接两个列表 - var list1 = std.ArrayList(i32).init(std.heap.page_allocator); - defer list1.deinit(); - try list1.appendSlice(&[_]i32{ 6, 8, 7, 10, 9 }); - try list.insertSlice(list.items.len, list1.items); - std.debug.print("\n将列表 list1 拼接到 list 之后,得到 list = ", .{}); - inc.PrintUtil.printList(i32, list); + var nums1 = std.ArrayList(i32).init(std.heap.page_allocator); + defer nums1.deinit(); + try nums1.appendSlice(&[_]i32{ 6, 8, 7, 10, 9 }); + try nums.insertSlice(nums.items.len, nums1.items); + std.debug.print("\n将列表 nums1 拼接到 nums 之后,得到 nums = ", .{}); + inc.PrintUtil.printList(i32, nums); // 排序列表 - std.mem.sort(i32, list.items, {}, comptime std.sort.asc(i32)); - std.debug.print("\n排序列表后 list = ", .{}); - inc.PrintUtil.printList(i32, list); + std.mem.sort(i32, nums.items, {}, comptime std.sort.asc(i32)); + std.debug.print("\n排序列表后 nums = ", .{}); + inc.PrintUtil.printList(i32, nums); _ = try std.io.getStdIn().reader().readByte(); } diff --git a/codes/zig/chapter_array_and_linkedlist/my_list.zig b/codes/zig/chapter_array_and_linkedlist/my_list.zig index 41388a25c0..096c593565 100644 --- a/codes/zig/chapter_array_and_linkedlist/my_list.zig +++ b/codes/zig/chapter_array_and_linkedlist/my_list.zig @@ -10,8 +10,8 @@ pub fn MyList(comptime T: type) type { return struct { const Self = @This(); - nums: []T = undefined, // 数组(存储列表元素) - numsCapacity: usize = 10, // 列表容量 + arr: []T = undefined, // 数组(存储列表元素) + arrCapacity: usize = 10, // 列表容量 numSize: usize = 0, // 列表长度(即当前元素数量) extendRatio: usize = 2, // 每次列表扩容的倍数 mem_arena: ?std.heap.ArenaAllocator = null, @@ -23,8 +23,8 @@ pub fn MyList(comptime T: type) type { self.mem_arena = std.heap.ArenaAllocator.init(allocator); self.mem_allocator = self.mem_arena.?.allocator(); } - self.nums = try self.mem_allocator.alloc(T, self.numsCapacity); - @memset(self.nums, @as(T, 0)); + self.arr = try self.mem_allocator.alloc(T, self.arrCapacity); + @memset(self.arr, @as(T, 0)); } // 析构函数(释放内存) @@ -40,28 +40,28 @@ pub fn MyList(comptime T: type) type { // 获取列表容量 pub fn capacity(self: *Self) usize { - return self.numsCapacity; + return self.arrCapacity; } // 访问元素 pub fn get(self: *Self, index: usize) T { // 索引如果越界则抛出异常,下同 if (index < 0 or index >= self.size()) @panic("索引越界"); - return self.nums[index]; + return self.arr[index]; } // 更新元素 pub fn set(self: *Self, index: usize, num: T) void { // 索引如果越界则抛出异常,下同 if (index < 0 or index >= self.size()) @panic("索引越界"); - self.nums[index] = num; + self.arr[index] = num; } // 尾部添加元素 pub fn add(self: *Self, num: T) !void { // 元素数量超出容量时,触发扩容机制 if (self.size() == self.capacity()) try self.extendCapacity(); - self.nums[self.size()] = num; + self.arr[self.size()] = num; // 更新元素数量 self.numSize += 1; } @@ -74,9 +74,9 @@ pub fn MyList(comptime T: type) type { // 将索引 index 以及之后的元素都向后移动一位 var j = self.size() - 1; while (j >= index) : (j -= 1) { - self.nums[j + 1] = self.nums[j]; + self.arr[j + 1] = self.arr[j]; } - self.nums[index] = num; + self.arr[index] = num; // 更新元素数量 self.numSize += 1; } @@ -84,11 +84,11 @@ pub fn MyList(comptime T: type) type { // 删除元素 pub fn remove(self: *Self, index: usize) T { if (index < 0 or index >= self.size()) @panic("索引越界"); - var num = self.nums[index]; + var num = self.arr[index]; // 索引 i 之后的元素都向前移动一位 var j = index; while (j < self.size() - 1) : (j += 1) { - self.nums[j] = self.nums[j + 1]; + self.arr[j] = self.arr[j + 1]; } // 更新元素数量 self.numSize -= 1; @@ -103,21 +103,21 @@ pub fn MyList(comptime T: type) type { var extend = try self.mem_allocator.alloc(T, newCapacity); @memset(extend, @as(T, 0)); // 将原数组中的所有元素复制到新数组 - std.mem.copy(T, extend, self.nums); - self.nums = extend; + std.mem.copy(T, extend, self.arr); + self.arr = extend; // 更新列表容量 - self.numsCapacity = newCapacity; + self.arrCapacity = newCapacity; } // 将列表转换为数组 pub fn toArray(self: *Self) ![]T { // 仅转换有效长度范围内的列表元素 - var nums = try self.mem_allocator.alloc(T, self.size()); - @memset(nums, @as(T, 0)); - for (nums, 0..) |*num, i| { + var arr = try self.mem_allocator.alloc(T, self.size()); + @memset(arr, @as(T, 0)); + for (arr, 0..) |*num, i| { num.* = self.get(i); } - return nums; + return arr; } }; } @@ -125,50 +125,49 @@ pub fn MyList(comptime T: type) type { // Driver Code pub fn main() !void { // 初始化列表 - var list = MyList(i32){}; - try list.init(std.heap.page_allocator); + var nums = MyList(i32){}; + try nums.init(std.heap.page_allocator); // 延迟释放内存 - defer list.deinit(); + defer nums.deinit(); // 尾部添加元素 - try list.add(1); - try list.add(3); - try list.add(2); - try list.add(5); - try list.add(4); - std.debug.print("列表 list = ", .{}); - inc.PrintUtil.printArray(i32, try list.toArray()); - std.debug.print(" ,容量 = {} ,长度 = {}", .{list.capacity(), list.size()}); + try nums.add(1); + try nums.add(3); + try nums.add(2); + try nums.add(5); + try nums.add(4); + std.debug.print("列表 nums = ", .{}); + inc.PrintUtil.printArray(i32, try nums.toArray()); + std.debug.print(" ,容量 = {} ,长度 = {}", .{nums.capacity(), nums.size()}); // 中间插入元素 - try list.insert(3, 6); - std.debug.print("\n在索引 3 处插入数字 6 ,得到 list = ", .{}); - inc.PrintUtil.printArray(i32, try list.toArray()); + try nums.insert(3, 6); + std.debug.print("\n在索引 3 处插入数字 6 ,得到 nums = ", .{}); + inc.PrintUtil.printArray(i32, try nums.toArray()); // 删除元素 - _ = list.remove(3); - std.debug.print("\n删除索引 3 处的元素,得到 list = ", .{}); - inc.PrintUtil.printArray(i32, try list.toArray()); + _ = nums.remove(3); + std.debug.print("\n删除索引 3 处的元素,得到 nums = ", .{}); + inc.PrintUtil.printArray(i32, try nums.toArray()); // 访问元素 - var num = list.get(1); + var num = nums.get(1); std.debug.print("\n访问索引 1 处的元素,得到 num = {}", .{num}); // 更新元素 - list.set(1, 0); - std.debug.print("\n将索引 1 处的元素更新为 0 ,得到 list = ", .{}); - inc.PrintUtil.printArray(i32, try list.toArray()); + nums.set(1, 0); + std.debug.print("\n将索引 1 处的元素更新为 0 ,得到 nums = ", .{}); + inc.PrintUtil.printArray(i32, try nums.toArray()); // 测试扩容机制 var i: i32 = 0; while (i < 10) : (i += 1) { // 在 i = 5 时,列表长度将超出列表容量,此时触发扩容机制 - try list.add(i); + try nums.add(i); } - std.debug.print("\n扩容后的列表 list = ", .{}); - inc.PrintUtil.printArray(i32, try list.toArray()); - std.debug.print(" ,容量 = {} ,长度 = {}\n", .{list.capacity(), list.size()}); + std.debug.print("\n扩容后的列表 nums = ", .{}); + inc.PrintUtil.printArray(i32, try nums.toArray()); + std.debug.print(" ,容量 = {} ,长度 = {}\n", .{nums.capacity(), nums.size()}); _ = try std.io.getStdIn().reader().readByte(); } - diff --git a/docs/chapter_array_and_linkedlist/list.md b/docs/chapter_array_and_linkedlist/list.md index 6de9e5e460..92c530f4fd 100755 --- a/docs/chapter_array_and_linkedlist/list.md +++ b/docs/chapter_array_and_linkedlist/list.md @@ -15,20 +15,20 @@ ```python title="list.py" # 初始化列表 # 无初始值 - list1: list[int] = [] + nums1: nums[int] = [] # 有初始值 - list2: list[int] = [1, 3, 2, 5, 4] + list2: nums[int] = [1, 3, 2, 5, 4] ``` === "C++" ```cpp title="list.cpp" /* 初始化列表 */ - // 需注意,C++ 中 vector 即是本文描述的 list + // 需注意,C++ 中 vector 即是本文描述的 nums // 无初始值 - vector list1; + vector nums1; // 有初始值 - vector list = { 1, 3, 2, 5, 4 }; + vector nums = { 1, 3, 2, 5, 4 }; ``` === "Java" @@ -36,10 +36,10 @@ ```java title="list.java" /* 初始化列表 */ // 无初始值 - List list1 = new ArrayList<>(); + List nums1 = new ArrayList<>(); // 有初始值(注意数组的元素类型需为 int[] 的包装类 Integer[]) Integer[] numbers = new Integer[] { 1, 3, 2, 5, 4 }; - List list = new ArrayList<>(Arrays.asList(numbers)); + List nums = new ArrayList<>(Arrays.asList(numbers)); ``` === "C#" @@ -47,10 +47,10 @@ ```csharp title="list.cs" /* 初始化列表 */ // 无初始值 - List list1 = new(); + List nums1 = new(); // 有初始值 int[] numbers = new int[] { 1, 3, 2, 5, 4 }; - List list = numbers.ToList(); + List nums = numbers.ToList(); ``` === "Go" @@ -58,9 +58,9 @@ ```go title="list_test.go" /* 初始化列表 */ // 无初始值 - list1 := []int + nums1 := []int // 有初始值 - list := []int{1, 3, 2, 5, 4} + nums := []int{1, 3, 2, 5, 4} ``` === "Swift" @@ -68,9 +68,9 @@ ```swift title="list.swift" /* 初始化列表 */ // 无初始值 - let list1: [Int] = [] + let nums1: [Int] = [] // 有初始值 - var list = [1, 3, 2, 5, 4] + var nums = [1, 3, 2, 5, 4] ``` === "JS" @@ -78,9 +78,9 @@ ```javascript title="list.js" /* 初始化列表 */ // 无初始值 - const list1 = []; + const nums1 = []; // 有初始值 - const list = [1, 3, 2, 5, 4]; + const nums = [1, 3, 2, 5, 4]; ``` === "TS" @@ -88,9 +88,9 @@ ```typescript title="list.ts" /* 初始化列表 */ // 无初始值 - const list1: number[] = []; + const nums1: number[] = []; // 有初始值 - const list: number[] = [1, 3, 2, 5, 4]; + const nums: number[] = [1, 3, 2, 5, 4]; ``` === "Dart" @@ -98,9 +98,9 @@ ```dart title="list.dart" /* 初始化列表 */ // 无初始值 - List list1 = []; + List nums1 = []; // 有初始值 - List list = [1, 3, 2, 5, 4]; + List nums = [1, 3, 2, 5, 4]; ``` === "Rust" @@ -108,7 +108,7 @@ ```rust title="list.rs" /* 初始化列表 */ // 无初始值 - let list1: Vec = Vec::new(); + let nums1: Vec = Vec::new(); // 有初始值 let list2: Vec = vec![1, 3, 2, 5, 4]; ``` @@ -123,9 +123,9 @@ ```zig title="list.zig" // 初始化列表 - var list = std.ArrayList(i32).init(std.heap.page_allocator); - defer list.deinit(); - try list.appendSlice(&[_]i32{ 1, 3, 2, 5, 4 }); + var nums = std.ArrayList(i32).init(std.heap.page_allocator); + defer nums.deinit(); + try nums.appendSlice(&[_]i32{ 1, 3, 2, 5, 4 }); ``` ### 访问元素 @@ -146,89 +146,89 @@ ```cpp title="list.cpp" /* 访问元素 */ - int num = list[1]; // 访问索引 1 处的元素 + int num = nums[1]; // 访问索引 1 处的元素 /* 更新元素 */ - list[1] = 0; // 将索引 1 处的元素更新为 0 + nums[1] = 0; // 将索引 1 处的元素更新为 0 ``` === "Java" ```java title="list.java" /* 访问元素 */ - int num = list.get(1); // 访问索引 1 处的元素 + int num = nums.get(1); // 访问索引 1 处的元素 /* 更新元素 */ - list.set(1, 0); // 将索引 1 处的元素更新为 0 + nums.set(1, 0); // 将索引 1 处的元素更新为 0 ``` === "C#" ```csharp title="list.cs" /* 访问元素 */ - int num = list[1]; // 访问索引 1 处的元素 + int num = nums[1]; // 访问索引 1 处的元素 /* 更新元素 */ - list[1] = 0; // 将索引 1 处的元素更新为 0 + nums[1] = 0; // 将索引 1 处的元素更新为 0 ``` === "Go" ```go title="list_test.go" /* 访问元素 */ - num := list[1] // 访问索引 1 处的元素 + num := nums[1] // 访问索引 1 处的元素 /* 更新元素 */ - list[1] = 0 // 将索引 1 处的元素更新为 0 + nums[1] = 0 // 将索引 1 处的元素更新为 0 ``` === "Swift" ```swift title="list.swift" /* 访问元素 */ - let num = list[1] // 访问索引 1 处的元素 + let num = nums[1] // 访问索引 1 处的元素 /* 更新元素 */ - list[1] = 0 // 将索引 1 处的元素更新为 0 + nums[1] = 0 // 将索引 1 处的元素更新为 0 ``` === "JS" ```javascript title="list.js" /* 访问元素 */ - const num = list[1]; // 访问索引 1 处的元素 + const num = nums[1]; // 访问索引 1 处的元素 /* 更新元素 */ - list[1] = 0; // 将索引 1 处的元素更新为 0 + nums[1] = 0; // 将索引 1 处的元素更新为 0 ``` === "TS" ```typescript title="list.ts" /* 访问元素 */ - const num: number = list[1]; // 访问索引 1 处的元素 + const num: number = nums[1]; // 访问索引 1 处的元素 /* 更新元素 */ - list[1] = 0; // 将索引 1 处的元素更新为 0 + nums[1] = 0; // 将索引 1 处的元素更新为 0 ``` === "Dart" ```dart title="list.dart" /* 访问元素 */ - int num = list[1]; // 访问索引 1 处的元素 + int num = nums[1]; // 访问索引 1 处的元素 /* 更新元素 */ - list[1] = 0; // 将索引 1 处的元素更新为 0 + nums[1] = 0; // 将索引 1 处的元素更新为 0 ``` === "Rust" ```rust title="list.rs" /* 访问元素 */ - let num: i32 = list[1]; // 访问索引 1 处的元素 + let num: i32 = nums[1]; // 访问索引 1 处的元素 /* 更新元素 */ - list[1] = 0; // 将索引 1 处的元素更新为 0 + nums[1] = 0; // 将索引 1 处的元素更新为 0 ``` === "C" @@ -241,10 +241,10 @@ ```zig title="list.zig" // 访问元素 - var num = list.items[1]; // 访问索引 1 处的元素 + var num = nums.items[1]; // 访问索引 1 处的元素 // 更新元素 - list.items[1] = 0; // 将索引 1 处的元素更新为 0 + nums.items[1] = 0; // 将索引 1 处的元素更新为 0 ``` ### 插入与删除元素 @@ -275,180 +275,180 @@ ```cpp title="list.cpp" /* 清空列表 */ - list.clear(); + nums.clear(); /* 尾部添加元素 */ - list.push_back(1); - list.push_back(3); - list.push_back(2); - list.push_back(5); - list.push_back(4); + nums.push_back(1); + nums.push_back(3); + nums.push_back(2); + nums.push_back(5); + nums.push_back(4); /* 中间插入元素 */ - list.insert(list.begin() + 3, 6); // 在索引 3 处插入数字 6 + nums.insert(nums.begin() + 3, 6); // 在索引 3 处插入数字 6 /* 删除元素 */ - list.erase(list.begin() + 3); // 删除索引 3 处的元素 + nums.erase(nums.begin() + 3); // 删除索引 3 处的元素 ``` === "Java" ```java title="list.java" /* 清空列表 */ - list.clear(); + nums.clear(); /* 尾部添加元素 */ - list.add(1); - list.add(3); - list.add(2); - list.add(5); - list.add(4); + nums.add(1); + nums.add(3); + nums.add(2); + nums.add(5); + nums.add(4); /* 中间插入元素 */ - list.add(3, 6); // 在索引 3 处插入数字 6 + nums.add(3, 6); // 在索引 3 处插入数字 6 /* 删除元素 */ - list.remove(3); // 删除索引 3 处的元素 + nums.remove(3); // 删除索引 3 处的元素 ``` === "C#" ```csharp title="list.cs" /* 清空列表 */ - list.Clear(); + nums.Clear(); /* 尾部添加元素 */ - list.Add(1); - list.Add(3); - list.Add(2); - list.Add(5); - list.Add(4); + nums.Add(1); + nums.Add(3); + nums.Add(2); + nums.Add(5); + nums.Add(4); /* 中间插入元素 */ - list.Insert(3, 6); + nums.Insert(3, 6); /* 删除元素 */ - list.RemoveAt(3); + nums.RemoveAt(3); ``` === "Go" ```go title="list_test.go" /* 清空列表 */ - list = nil + nums = nil /* 尾部添加元素 */ - list = append(list, 1) - list = append(list, 3) - list = append(list, 2) - list = append(list, 5) - list = append(list, 4) + nums = append(nums, 1) + nums = append(nums, 3) + nums = append(nums, 2) + nums = append(nums, 5) + nums = append(nums, 4) /* 中间插入元素 */ - list = append(list[:3], append([]int{6}, list[3:]...)...) // 在索引 3 处插入数字 6 + nums = append(nums[:3], append([]int{6}, nums[3:]...)...) // 在索引 3 处插入数字 6 /* 删除元素 */ - list = append(list[:3], list[4:]...) // 删除索引 3 处的元素 + nums = append(nums[:3], nums[4:]...) // 删除索引 3 处的元素 ``` === "Swift" ```swift title="list.swift" /* 清空列表 */ - list.removeAll() + nums.removeAll() /* 尾部添加元素 */ - list.append(1) - list.append(3) - list.append(2) - list.append(5) - list.append(4) + nums.append(1) + nums.append(3) + nums.append(2) + nums.append(5) + nums.append(4) /* 中间插入元素 */ - list.insert(6, at: 3) // 在索引 3 处插入数字 6 + nums.insert(6, at: 3) // 在索引 3 处插入数字 6 /* 删除元素 */ - list.remove(at: 3) // 删除索引 3 处的元素 + nums.remove(at: 3) // 删除索引 3 处的元素 ``` === "JS" ```javascript title="list.js" /* 清空列表 */ - list.length = 0; + nums.length = 0; /* 尾部添加元素 */ - list.push(1); - list.push(3); - list.push(2); - list.push(5); - list.push(4); + nums.push(1); + nums.push(3); + nums.push(2); + nums.push(5); + nums.push(4); /* 中间插入元素 */ - list.splice(3, 0, 6); + nums.splice(3, 0, 6); /* 删除元素 */ - list.splice(3, 1); + nums.splice(3, 1); ``` === "TS" ```typescript title="list.ts" /* 清空列表 */ - list.length = 0; + nums.length = 0; /* 尾部添加元素 */ - list.push(1); - list.push(3); - list.push(2); - list.push(5); - list.push(4); + nums.push(1); + nums.push(3); + nums.push(2); + nums.push(5); + nums.push(4); /* 中间插入元素 */ - list.splice(3, 0, 6); + nums.splice(3, 0, 6); /* 删除元素 */ - list.splice(3, 1); + nums.splice(3, 1); ``` === "Dart" ```dart title="list.dart" /* 清空列表 */ - list.clear(); + nums.clear(); /* 尾部添加元素 */ - list.add(1); - list.add(3); - list.add(2); - list.add(5); - list.add(4); + nums.add(1); + nums.add(3); + nums.add(2); + nums.add(5); + nums.add(4); /* 中间插入元素 */ - list.insert(3, 6); // 在索引 3 处插入数字 6 + nums.insert(3, 6); // 在索引 3 处插入数字 6 /* 删除元素 */ - list.removeAt(3); // 删除索引 3 处的元素 + nums.removeAt(3); // 删除索引 3 处的元素 ``` === "Rust" ```rust title="list.rs" /* 清空列表 */ - list.clear(); + nums.clear(); /* 尾部添加元素 */ - list.push(1); - list.push(3); - list.push(2); - list.push(5); - list.push(4); + nums.push(1); + nums.push(3); + nums.push(2); + nums.push(5); + nums.push(4); /* 中间插入元素 */ - list.insert(3, 6); // 在索引 3 处插入数字 6 + nums.insert(3, 6); // 在索引 3 处插入数字 6 /* 删除元素 */ - list.remove(3); // 删除索引 3 处的元素 + nums.remove(3); // 删除索引 3 处的元素 ``` === "C" @@ -461,20 +461,20 @@ ```zig title="list.zig" // 清空列表 - list.clearRetainingCapacity(); + nums.clearRetainingCapacity(); // 尾部添加元素 - try list.append(1); - try list.append(3); - try list.append(2); - try list.append(5); - try list.append(4); + try nums.append(1); + try nums.append(3); + try nums.append(2); + try nums.append(5); + try nums.append(4); // 中间插入元素 - try list.insert(3, 6); // 在索引 3 处插入数字 6 + try nums.insert(3, 6); // 在索引 3 处插入数字 6 // 删除元素 - _ = list.orderedRemove(3); // 删除索引 3 处的元素 + _ = nums.orderedRemove(3); // 删除索引 3 处的元素 ``` ### 遍历列表 @@ -486,12 +486,12 @@ ```python title="list.py" # 通过索引遍历列表 count = 0 - for i in range(len(list)): + for i in range(len(nums)): count += 1 # 直接遍历列表元素 count = 0 - for n in list: + for num in nums: count += 1 ``` @@ -500,13 +500,13 @@ ```cpp title="list.cpp" /* 通过索引遍历列表 */ int count = 0; - for (int i = 0; i < list.size(); i++) { + for (int i = 0; i < nums.size(); i++) { count++; } /* 直接遍历列表元素 */ count = 0; - for (int n : list) { + for (int num : nums) { count++; } ``` @@ -516,13 +516,13 @@ ```java title="list.java" /* 通过索引遍历列表 */ int count = 0; - for (int i = 0; i < list.size(); i++) { + for (int i = 0; i < nums.size(); i++) { count++; } /* 直接遍历列表元素 */ count = 0; - for (int n : list) { + for (int num : nums) { count++; } ``` @@ -532,13 +532,13 @@ ```csharp title="list.cs" /* 通过索引遍历列表 */ int count = 0; - for (int i = 0; i < list.Count; i++) { + for (int i = 0; i < nums.Count; i++) { count++; } /* 直接遍历列表元素 */ count = 0; - foreach (int n in list) { + foreach (int num in nums) { count++; } ``` @@ -548,13 +548,13 @@ ```go title="list_test.go" /* 通过索引遍历列表 */ count := 0 - for i := 0; i < len(list); i++ { + for i := 0; i < len(nums); i++ { count++ } /* 直接遍历列表元素 */ count = 0 - for range list { + for range nums { count++ } ``` @@ -564,13 +564,13 @@ ```swift title="list.swift" /* 通过索引遍历列表 */ var count = 0 - for _ in list.indices { + for _ in nums.indices { count += 1 } /* 直接遍历列表元素 */ count = 0 - for _ in list { + for _ in nums { count += 1 } ``` @@ -580,13 +580,13 @@ ```javascript title="list.js" /* 通过索引遍历列表 */ let count = 0; - for (let i = 0; i < list.length; i++) { + for (let i = 0; i < nums.length; i++) { count++; } /* 直接遍历列表元素 */ count = 0; - for (const n of list) { + for (const num of nums) { count++; } ``` @@ -596,13 +596,13 @@ ```typescript title="list.ts" /* 通过索引遍历列表 */ let count = 0; - for (let i = 0; i < list.length; i++) { + for (let i = 0; i < nums.length; i++) { count++; } /* 直接遍历列表元素 */ count = 0; - for (const n of list) { + for (const num of nums) { count++; } ``` @@ -612,13 +612,13 @@ ```dart title="list.dart" /* 通过索引遍历列表 */ int count = 0; - for (int i = 0; i < list.length; i++) { + for (int i = 0; i < nums.length; i++) { count++; } /* 直接遍历列表元素 */ count = 0; - for (int n in list) { + for (int num in nums) { count++; } ``` @@ -628,13 +628,13 @@ ```rust title="list.rs" /* 通过索引遍历列表 */ let mut count = 0; - for (index, value) in list.iter().enumerate() { + for (index, value) in nums.iter().enumerate() { count += 1; } /* 直接遍历列表元素 */ let mut count = 0; - for value in list.iter() { + for value in nums.iter() { count += 1; } ``` @@ -651,100 +651,100 @@ // 通过索引遍历列表 var count: i32 = 0; var i: i32 = 0; - while (i < list.items.len) : (i += 1) { + while (i < nums.items.len) : (i += 1) { count += 1; } // 直接遍历列表元素 count = 0; - for (list.items) |_| { + for (nums.items) |_| { count += 1; } ``` ### 拼接列表 -给定一个新列表 `list1` ,我们可以将该列表拼接到原列表的尾部。 +给定一个新列表 `nums1` ,我们可以将该列表拼接到原列表的尾部。 === "Python" ```python title="list.py" # 拼接两个列表 - list1: list[int] = [6, 8, 7, 10, 9] - list2 += list1 # 将列表 list1 拼接到 list2 之后 + nums1: nums[int] = [6, 8, 7, 10, 9] + list2 += nums1 # 将列表 nums1 拼接到 list2 之后 ``` === "C++" ```cpp title="list.cpp" /* 拼接两个列表 */ - vector list1 = { 6, 8, 7, 10, 9 }; - // 将列表 list1 拼接到 list 之后 - list.insert(list.end(), list1.begin(), list1.end()); + vector nums1 = { 6, 8, 7, 10, 9 }; + // 将列表 nums1 拼接到 nums 之后 + nums.insert(nums.end(), nums1.begin(), nums1.end()); ``` === "Java" ```java title="list.java" /* 拼接两个列表 */ - List list1 = new ArrayList<>(Arrays.asList(new Integer[] { 6, 8, 7, 10, 9 })); - list.addAll(list1); // 将列表 list1 拼接到 list 之后 + List nums1 = new ArrayList<>(Arrays.asList(new Integer[] { 6, 8, 7, 10, 9 })); + nums.addAll(nums1); // 将列表 nums1 拼接到 nums 之后 ``` === "C#" ```csharp title="list.cs" /* 拼接两个列表 */ - List list1 = new() { 6, 8, 7, 10, 9 }; - list.AddRange(list1); // 将列表 list1 拼接到 list 之后 + List nums1 = new() { 6, 8, 7, 10, 9 }; + nums.AddRange(nums1); // 将列表 nums1 拼接到 nums 之后 ``` === "Go" ```go title="list_test.go" /* 拼接两个列表 */ - list1 := []int{6, 8, 7, 10, 9} - list = append(list, list1...) // 将列表 list1 拼接到 list 之后 + nums1 := []int{6, 8, 7, 10, 9} + nums = append(nums, nums1...) // 将列表 nums1 拼接到 nums 之后 ``` === "Swift" ```swift title="list.swift" /* 拼接两个列表 */ - let list1 = [6, 8, 7, 10, 9] - list.append(contentsOf: list1) // 将列表 list1 拼接到 list 之后 + let nums1 = [6, 8, 7, 10, 9] + nums.append(contentsOf: nums1) // 将列表 nums1 拼接到 nums 之后 ``` === "JS" ```javascript title="list.js" /* 拼接两个列表 */ - const list1 = [6, 8, 7, 10, 9]; - list.push(...list1); // 将列表 list1 拼接到 list 之后 + const nums1 = [6, 8, 7, 10, 9]; + nums.push(...nums1); // 将列表 nums1 拼接到 nums 之后 ``` === "TS" ```typescript title="list.ts" /* 拼接两个列表 */ - const list1: number[] = [6, 8, 7, 10, 9]; - list.push(...list1); // 将列表 list1 拼接到 list 之后 + const nums1: number[] = [6, 8, 7, 10, 9]; + nums.push(...nums1); // 将列表 nums1 拼接到 nums 之后 ``` === "Dart" ```dart title="list.dart" /* 拼接两个列表 */ - List list1 = [6, 8, 7, 10, 9]; - list.addAll(list1); // 将列表 list1 拼接到 list 之后 + List nums1 = [6, 8, 7, 10, 9]; + nums.addAll(nums1); // 将列表 nums1 拼接到 nums 之后 ``` === "Rust" ```rust title="list.rs" /* 拼接两个列表 */ - let list1: Vec = vec![6, 8, 7, 10, 9]; - list.extend(list1); + let nums1: Vec = vec![6, 8, 7, 10, 9]; + nums.extend(nums1); ``` === "C" @@ -757,10 +757,10 @@ ```zig title="list.zig" // 拼接两个列表 - var list1 = std.ArrayList(i32).init(std.heap.page_allocator); - defer list1.deinit(); - try list1.appendSlice(&[_]i32{ 6, 8, 7, 10, 9 }); - try list.insertSlice(list.items.len, list1.items); // 将列表 list1 拼接到 list 之后 + var nums1 = std.ArrayList(i32).init(std.heap.page_allocator); + defer nums1.deinit(); + try nums1.appendSlice(&[_]i32{ 6, 8, 7, 10, 9 }); + try nums.insertSlice(nums.items.len, nums1.items); // 将列表 nums1 拼接到 nums 之后 ``` ### 排序列表 @@ -778,63 +778,63 @@ ```cpp title="list.cpp" /* 排序列表 */ - sort(list.begin(), list.end()); // 排序后,列表元素从小到大排列 + sort(nums.begin(), nums.end()); // 排序后,列表元素从小到大排列 ``` === "Java" ```java title="list.java" /* 排序列表 */ - Collections.sort(list); // 排序后,列表元素从小到大排列 + Collections.sort(nums); // 排序后,列表元素从小到大排列 ``` === "C#" ```csharp title="list.cs" /* 排序列表 */ - list.Sort(); // 排序后,列表元素从小到大排列 + nums.Sort(); // 排序后,列表元素从小到大排列 ``` === "Go" ```go title="list_test.go" /* 排序列表 */ - sort.Ints(list) // 排序后,列表元素从小到大排列 + sort.Ints(nums) // 排序后,列表元素从小到大排列 ``` === "Swift" ```swift title="list.swift" /* 排序列表 */ - list.sort() // 排序后,列表元素从小到大排列 + nums.sort() // 排序后,列表元素从小到大排列 ``` === "JS" ```javascript title="list.js" /* 排序列表 */ - list.sort((a, b) => a - b); // 排序后,列表元素从小到大排列 + nums.sort((a, b) => a - b); // 排序后,列表元素从小到大排列 ``` === "TS" ```typescript title="list.ts" /* 排序列表 */ - list.sort((a, b) => a - b); // 排序后,列表元素从小到大排列 + nums.sort((a, b) => a - b); // 排序后,列表元素从小到大排列 ``` === "Dart" ```dart title="list.dart" /* 排序列表 */ - list.sort(); // 排序后,列表元素从小到大排列 + nums.sort(); // 排序后,列表元素从小到大排列 ``` === "Rust" ```rust title="list.rs" /* 排序列表 */ - list.sort(); // 排序后,列表元素从小到大排列 + nums.sort(); // 排序后,列表元素从小到大排列 ``` === "C" @@ -847,7 +847,7 @@ ```zig title="list.zig" // 排序列表 - std.sort.sort(i32, list.items, {}, comptime std.sort.asc(i32)); + std.sort.sort(i32, nums.items, {}, comptime std.sort.asc(i32)); ``` ## 列表实现