加入学习群,定期分享干货,不定期答疑。+v: 18665420923。
1、删除元素
有一个数组,数组中共有N个元素,现在我们想将其中第x位元素删除。
例如,当N=5时,有以下数组:
现在要将数组的第2位删除:
为了数字的连续,需要将第2位后的元素往前移动
也就是说,当删除数组中下标为x的数时,我们需要从x+1位开始,到最后一位,每次将当前位的值赋值给前一位:
在以上的例子中,X=2,我们从第3位开始,将第3位的值赋值给第2位:
接下来将第4位的值赋值给第3位:
最后将数组的长度-1,就得到了原数组删除了第2位后的数组:
代码演示:【请注释每一句以及每一个变量的含义】
//数组元素的删除
#include<iostream>
using namespace std;
int a[10005],x,n;
int main()
{
cin>>n>>x;
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=x+1;i<n;i++){
a[i-1]=a[i];
}
n--;
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
return 0;
}
2、数组插入元素——插入到数组中的最后一位
例如,当N=5时,有以下数组:
当我们想新加一个元素到数组中的最后一位时,首先要保证定义的数组足够大,在数组够大的前提下,我们可将新加的元素赋值到数组的最后1位,此时数组中元素增加了一个,所以N也要相对应的加1。
在上面的例子中,新加一个元素到数组的最后一位(第5位), 并且N加1。最终N为6,数组中共6个元素:
代码演示:【请注释每一句以及每一个变量的含义】
//插入最后一位
#include<iostream>
using namespace std;
int a[10005],n,k;
int main()
{
cin>>n>>k;
for(int i=0;i<n;i++){
cin>>a[i];
}
a[n]=k;
n++;
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
return 0;
}
3、数组插入元素——插入到数组中间
进一步,我们想能够将一个元素插入到数组中的任意位置,例如,有以下数组:
要在第1个位置新插入一个元素,那么我们首先需要给新的元素挪出位置,将从第1个位置开始之后的元素都往后移。
再将新的元素赋值到下标为1的数组中。
如何将元素都往后移呢,我们可以从最后一位开始(比如第x位),将元素赋值给数组的第x+1位:
(数组从0开始,共N个元素,在第ind位插入x)
注意:一定要从后向前移动。如果将for循环语句改成下面语句会如何?
for (int i=ind; i<n; i++)
arr[i+1]=arr[i];
代码演示:【请注释每一句以及每一个变量的含义】
//在中间插入
#include<iostream>
using namespace std;
int a[10005],n,x,ind;
int main()
{
cin>>n>>x>>ind;
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=n-1;i>=ind;i--){
a[i+1]=a[i];
}
a[ind]=x;
n++;
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
return 0;
}