用c语言选择性删除数组
时间: 2024-11-01 18:07:18 浏览: 7
在C语言中,如果想要按条件选择性地删除数组中的元素,最直接的方式是创建一个新的数组,并将符合条件的元素复制到新数组中,原数组的相应位置则置为0或NULL。这里有一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
void delete_elements(int* arr, int size, int condition) {
// 新建一个大小为size的新数组
int* new_arr = malloc(size * sizeof(int));
if (new_arr == NULL) {
printf("内存分配失败\n");
return;
}
int count = 0; // 记录有效元素的数量
for (int i = 0; i < size; i++) {
if (arr[i] != condition) { // 如果元素不满足删除条件
new_arr[count++] = arr[i]; // 将其复制到新数组
}
}
// 确保新数组结束符为NULL
new_arr[count] = 0;
// 更新指针并释放旧数组
arr = new_arr;
free(new_arr);
}
// 示例:删除所有等于5的元素
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 5};
int size = sizeof(arr) / sizeof(arr[0]);
delete_elements(arr, size, 5);
// 输出处理后的数组
for (int i = 0; arr[i] != 0; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
在这个例子中,`delete_elements`函数会删除数组`arr`中值等于`condition`的所有元素。然后主函数展示处理后的结果。
阅读全文