我有一个已经排序过的数字数组,因此无需对其进行排序,我需要在数组中的有效位置插入一个名为val
的给定值。
我的程序适用于小于最后一个值的给定值,但对于值大于最后一个值的情况,我的程序只是不想插入值。
例如,对于数组{1, 2, 3, 4, 6}
和值5
,数组应为{1, 2, 3, 4, 5, 6}
,但对于值7
,我的数组看起来像{{1} }}
{1, 2, 7, 4, 6, 0}
答案 0 :(得分:3)
你有几个错误:
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
,它仍然可以使用。