如何在数组中的每个元素后插入一个新元素?

时间:2016-12-05 04:10:02

标签: c arrays

如何在数组中的每个元素之后插入新元素?

例如,我有一个数组3,4,5,6,7,我想在每个元素之后添加0。所以在修改新数组后应该是3,0,4,0,5,0,6,0,7,0

过去几个小时我一直试图这样做而没有任何成功。

谢谢大家

2 个答案:

答案 0 :(得分:1)

我没有对此进行测试,但它应该可行。 如果您正在进行此操作,那么您需要像这样向后工作,否则在您阅读之前就会覆盖一些数组。

//Make sure it has space for the zeros.
//If we have 5 numbers here, we need space for 10
int arr[10] = {3, 4, 5, 6, 7};

//Start at the last number (index 4) and work your way down.
//If you start at zero and increment up, you will overwrite data at the beginning of the array.
for (int i = 4; i >= 0; i--)
{
    arr[i * 2] = arr[i]; //Move the number
    arr[i * 2 + 1] = 0; //Add a zero after it
}

答案 1 :(得分:0)

正如你在C下标记它一样。我会在这里避免使用矢量。 假设您已经在堆上堆栈上已经分配了10个整数的数组。由于您有5个元素,因此需要5个零。因此,结果数组中的总元素将为10。

void function(int arr[], int size)
{
    int loc = size/2;
    while(size>=0)
    {
        if(size&1)
            arr[size--] = arr[loc--];
        else
            arr[size--] = 0;
    }
}