数组的增删改查(C语言版)

数组指定位置的增加

  1. 思路:将元素插入到指定位置,再把后面的元素向后移动(注:会增大容量)

代码实现:

#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;
}
  1. 数据结构中链式存储结构对数组增加(不需要将元素后移,效率率高)

数组指定位置的删除

思路:元素覆盖,将指定位置后面的元素前移。

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值