一维数组-插入与删除

加入学习群,定期分享干货,不定期答疑。+v: 18665420923。

1、删除元素

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

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

a1.png

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

a2.png

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

 

a3.png

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

a4.png

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

a5.png

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

a6.png

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

a7.png

代码演示:【请注释每一句以及每一个变量的含义】

//数组元素的删除
#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时,有以下数组:

a8.png

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

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

a9.png

代码演示:【请注释每一句以及每一个变量的含义】

//插入最后一位
#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、数组插入元素——插入到数组中间

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

a10.png

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

a11.png

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

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

a12.png

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

a13.png

注意:一定要从后向前移动。如果将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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值