c++数组的插入与删除详解

1. 删除元素

有一个数组,数组中共有N个元素,现在我们想将其中第x位元素删除。

例如,当N=5时,有以下数组:

c++数组的插入与删除详解_第1张图片

现在要将数组的第2位删除:

4

12

3

6

43

为了数字的连续,需要将第2位后的元素往前移动

c++数组的插入与删除详解_第2张图片

也就是说,当删除数组中下标为x的数时,我们需要从x+1位开始,到最后一位,每次将当前位的值赋值给前一位:

c++数组的插入与删除详解_第3张图片

在以上的例子中,X=2,我们从第3位开始,将第3位的值赋值给第2位:

接下来将第4位的值赋值给第3位:

c++数组的插入与删除详解_第4张图片

最后将数组的长度-1,就得到了原数组删除了第2位后的数组:

4

12

6

43

- 插入到数组中的最后一位

例如,当N=5时,有以下数组:

c++数组的插入与删除详解_第5张图片

当我们想新加一个元素到数组中的最后一位时,首先要保证定义的数组足够大,在数组够大的前提下,我们可将新加的元素赋值到数组的最后1位,此时数组中元素增加了一个,所以N也要相对应的加1。

在上面的例子中,新加一个元素到数组的最后一位(第5位), 并且N加1。最终N为6,数组中共6个元素:

- 插入到数组中间

进一步,我们想能够将一个元素插入到数组中的任意位置,例如,有以下数组:

c++数组的插入与删除详解_第6张图片

要在第1个位置新插入一个元素,那么我们首先需要给新的元素挪出位置,将从第1个位置开始之后的元素都往后移。

c++数组的插入与删除详解_第7张图片

再将新的元素赋值到下标为1的数组中。

如何将元素都往后移呢,我们可以从最后一位开始(比如第x位),将元素赋值给数组的第x+1位:

c++数组的插入与删除详解_第8张图片

(数组从0开始,共N个元素,在第ind位插入x)

c++数组的插入与删除详解_第9张图片

说明

l 一定要从后向前移动。如果将for循环语句改成下面语句会如何?

for (int i=ind; i

arr[i+1]=arr[i];

你可能感兴趣的:(基础精讲,c++,数据结构,开发语言,算法)