数组指定位置的增加
思路:将元素插入到指定位置,再把后面的元素向后移动(注:会增大容量)
代码实现:
#include<bits/stdc++.h>
using namespace std;
void increase(int*a,int value,int size,int seat){//value为插入值,size为数组有效长度,seat为插入位置
for(int i=size-1;i>=seat-1;i--){//seat-1是因为数组从0开始;
a[i+1]=a[i];
}
a[seat-1]=value;//把第seat位置赋值,后面位置后移;
}
int main(){
int size,a[10101];//a的长度尽量长且满足需求
scanf("%d",&size);
for(int i=0;i<size;i++){
scanf("%d",&a[i]);
}
int seat,value;
scanf("%d %d",&seat,&value);
increase(a,value,size,seat);//函数写在main前直接调用
for(int i=0;i<size+1;i++){
printf("%d ",a[i]);
}
return 0;
}
数据结构中链式存储结构对数组增加(不需要将元素后移,效率率高)
数组指定位置的删除
思路:元素覆盖,将指定位置后面的元素前移。
#include<bits/stdc++.h>
using namespace std;
void deleted(int*a,int seat,int size){//元素覆盖,将指定位置元素向前移动
for(int i=seat-1;i<size-1;i++){
a[i]=a[i+1];
}
}
int main(){
int size,a[10101];//a的长度尽量长且满足需求
scanf("%d",&size);
for(int i=0;i<size;i++){
scanf("%d",&a[i]);
}
int seat;
scanf("%d",&seat);
deleted(a,seat,size);//函数写在main前直接调用
for(int i=0;i<size-1;i++){
printf("%d ",a[i]);
}
return 0;
}
同样,数据结构中链式存储结构也对数组删减。
数组的元素修改
思路:直接对指定位置的元素赋值
#include<bits/stdc++.h>
using namespace std;
int main(){
int size,a[10101];//a的长度尽量长且满足需求
scanf("%d",&size);
for(int i=0;i<size;i++){
scanf("%d",&a[i]);
}
int seat,value;
scanf("%d %d",&seat,&value);
a[seat-1]=value;//对第seat个元素直接赋值
for(int i=0;i<size;i++){
printf("%d ",a[i]);
}
return 0;
}
数组元素的查找
思路:遍历全部元素,查找元素位置
#include<bits/stdc++.h>
using namespace std;
int main(){
int size,a[10101];//a的长度尽量长且满足需求
scanf("%d",&size);
for(int i=0;i<size;i++){
scanf("%d",&a[i]);
}
int value,seat;
scanf("%d",&value);
for(int i=0;i<size;i++){
if(a[i]==value){
seat=i;
}
}
printf("%d",seat+1);//输出要查找元素的位置 (第seat+1个)
return 0;
}