gpt4 book ai didi

c - 将元素插入数组 C

转载 作者:行者123 更新时间:2023-12-01 13:34:44 25 4
gpt4 key购买 nike

我有一个之前已经排序过的数字数组,所以没有必要对它进行排序,我需要插入一个给定的值,命名为 val , 在我的数组中的有效位置。

我的程序适用于小于最后一个的给定值,但对于该值大于最后一个的情况,我的程序只是不想插入该值。

例如,对于数组 {1, 2, 3, 4, 6}和值 5 ,数组应该是 {1, 2, 3, 4, 5, 6} ,但对于值 7我的阵列看起来像 {1, 2, 7, 4, 6, 0} .

#include <stdio.h>

void insert(int val, int *n, int v[])
{
int index;
index = n - 1;
if (n == 0)
{
v[0] = val; // check if array is empty
n = n + 1; // v[0] becomes the given value
} // increase size of array
if (val > v[index])
{
v[index+1] = val; // given value is bigger than the last value in array
n = n + 1; // increase size
}
else
{
while (index >= 0 && v[index] > val)
{
v[index+1] = v[index]; //shift items to the right
index--;
}

v[index + 1] = val; //after moving elements to the right
n = n + 1; // i set the value to the valid position
}
}

void display(int n, int v[])
{
int i;
for (i = 0;i < n; i++)
printf("%d ", v[i]);
}

int main(void)
{
int v[10] = { 12, 23, 34, 41, 69, 71, 81, 91, 100 };
int n;
n = 9; // size of array
insert(101,n,v); // 101 is given value to insert
display(n,v);
return 0;
}

最佳答案

你有几个错误:

  • 你路过 int而不是 int *所以你不能更新数组大小
  • 您没有正确地将值放入数组

  • 你的代码应该是这样的:
    #include <stdio.h>

    void insert(int val, int *nPtr, int v[]);
    void display(int n, int v[]);

    int main(void) {
    int v[10] = {12, 23, 34, 41, 69, 71, 81, 91, 100};
    int n;
    n = 9;
    insert(101, &n, v);
    display(n, v);
    return 0;
    }

    void insert(int val, int *nPtr, int v[]) {
    int n = *nPtr;
    int i, j;
    int k = 0;

    for (i = 0; i < n + 1; i++)
    if (!k) {
    if (v[i] > val || i == n) {
    for (j = n - 1; j >= i; j--) {
    v[j + 1] = v[j];
    }

    v[i] = val;
    n++;

    k = 1;
    }
    }

    *nPtr = n;
    }

    void display(int n, int v[]) {
    int i;
    for (i = 0; i < n; i++)
    printf("%d ", v[i]);
    printf("\n");
    }

    您也可以尝试在开头插入数字,例如 0它仍然会起作用。

    关于c - 将元素插入数组 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44378012/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com