将元素插入到数组C中

时间:2017-06-05 21:32:00

标签: c arrays insert

我有一个已经排序过的数字数组,因此无需对其进行排序,我需要在数组中的有效位置插入一个名为val的给定值。

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

例如,对于数组{1, 2, 3, 4, 6}和值5,数组应为{1, 2, 3, 4, 5, 6},但对于值7,我的数组看起来像{{1} }}

{1, 2, 7, 4, 6, 0}

1 个答案:

答案 0 :(得分:3)

你有几个错误:

  1. 您正在传递int而不是int *,因此您无法更新数组大小
  2. 您没有正确地在数组中放置值
  3. 这就是你的代码的样子:

    #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,它仍然可以使用。