C语言 C++ 计算机 数组

img


学计算机的,这个问题不太懂,不知道如何代码,希望可以陈述一下,谢谢大家


// 思路:从后往前将数组中元素往后挪一个位置,将目标位置空出来,把新的元素插入到空出的位置

#include <iostream>
#include <vector>

using namespace std;

// 输出数组
void printNums(vector<int>& nums) {
    
    for (int i = 0; i < nums.size(); ++i) {
        cout << nums[i] << " ";
    }
    cout << endl;
}

vector<int> addNewNum(vector<int>& nums, int idx, int newNum) {
    /*
    nums:   表示原来的数组
    idx:    表示新增加的元素放置在原数组中的位置,从 0 开始
    newNum: 表示新增加的元素
    */

    nums.push_back(-1);     // 一个占位符,也就是在原数组后增加一个空位,方便将前一个元素挪位
    int n = nums.size();
    for (int i = n-2; i >= idx; --i) {
        nums[i + 1] = nums[i];
    }
    nums[idx] = newNum;

    return nums;
}

int main() {
    // 比如说 nums = {1, 5, 6, 7 ,8} 在第三个数后面插入一个数 10 后,输出新的数组
    vector<int> nums = { 1, 5, 6, 7, 8};
    int idx = 3;
    int newNum = 10;

    cout << "原来的数组:" << endl;
    printNums(nums);

    vector<int> ret = addNewNum(nums, idx, newNum);

    cout << "新增元素后的数组:" << endl;
    printNums(nums);


    return 0;
}