c语言数组元素的删除与增加。

已初始化数组中。1怎样删除一个元素,使后面所有元素前移。2怎样增加一个元素,使后面所有元素后移。... 已初始化数组中。
1怎样删除一个元素,使后面所有元素前移。
2怎样增加一个元素,使后面所有元素后移。
展开
 我来答
无声的硝烟
推荐于2017-11-23 · TA获得超过593个赞
知道小有建树答主
回答量:360
采纳率:77%
帮助的人:145万
展开全部

C语言中的数组本质上是在计算机内存中分配的连续空间。

如果需要对元素进行插入和删除,并不能直接将内存中为该数组分配的空间进行插入/新增和删除,而是只能通过数据复制的方式将本来不在这个位置的元素进行移动,看起来像是元素的前移和后移。

举个例子吧:整型数组(1, 2, 3, 4, 5),如果要把2删除,那么可以将3,4,5分别向前移动,变成(1, 3, 4, 5, 5)。由于数组长度分配以后不会变化,因此最后一个多余的5实际上并不能删掉,它只是表示无意义的位置。因此对于编程人员来讲,需要另一个参数来记录这个数组中你认为有用的元素是前多少个。

值得注意的是,如果数组长度不足以保存新的元素时,是无法动态地增加数组长度的。如果非要这么做,必须要在数组分配时保证数组大小足够大。这也就是一些新手经常将数组长度设置为1000,10000的原因。

回到这个问题:

// 预定义的数组,长度为20
int array[20] = {0};
// 数组当前有效长度
int arrayLen = 0;

// 如果不是全局数组,则需要将数组指针和数组长度指针传入进行修改
void insertArray(int newElement, int index)
{
    // 这里没有做数组长度的检验,你需要自己完成
    
    int i;
    for (i = arrayLen++; i > index; )
        array[i--] = array[i - 1];    // 后移
        
    array[index] = newElement;
}

void deleteArrayElement(int index)
{
    for ( ; index < arrayLen; )
        array[index++] = array[index + 1];    // 前移。要删除的位置会被直接覆盖
        
    arrayLen--;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式