6-2 教材6-3:自定义函数实现有序数组的删除,从一个有序数组(由小到大)中删除一个数据。如数组a={1,3,5,7,9},删除3后的a是{1,5,7,9},长度减1(不会释放数组内存)。如果要删除的数据不在数组中,数组不变。
时间: 2023-06-15 16:04:40 浏览: 138
可以通过自定义函数来实现有序数组的删除,具体步骤如下:
1. 定义一个函数,传入两个参数:要删除的数值和有序数组。
2. 遍历数组,找到要删除的数值所在的位置。
3. 如果找到要删除的数值,则从该位置开始,将后面的元素向前移动一位,并将数组长度减1。
4. 如果没有找到要删除的数值,则不做任何操作。
下面是实现删除的代码示例:
```c
void deleteData(int num, int a[], int len) {
int i, j;
for (i = 0; i < len; i++) {
if (a[i] == num) { // 找到要删除的数值
for (j = i; j < len - 1; j++) {
a[j] = a[j+1]; // 将后面的元素向前移动
}
len--; // 数组长度减1
break;
}
}
// 输出删除后的数组
printf("删除%d后的数组为:", num);
for (i = 0; i < len; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
```
使用示例:
```c
int main() {
int a[] = {1, 3, 5, 7, 9};
int len = sizeof(a) / sizeof(int);
deleteData(3, a, len);
return 0;
}
```
输出结果为:
```
删除3后的数组为:1 5 7 9
```
如果要删除的数据不在数组中,数组不变,可以在函数内添加一个判断条件,如果没有找到要删除的数值,则输出原数组即可。