请在整型一维数组a中原地删除所有值等于x的元素。(不允许借助辅助数组)用C语言
时间: 2024-12-21 17:27:28 浏览: 6
在C语言中,要在整型一维数组`a`中原地删除所有值等于`x`的元素,可以采用双指针法,同时维护两个指针,一个指向当前元素的位置,一个指向下一个将要保留的元素位置。以下是实现这个操作的代码片段:
```c
#include <stdio.h>
void removeDuplicates(int a[], int n, int x) {
int i = 0, j = 0; // 初始化两个指针
while (i < n) {
if (a[i] != x) { // 如果当前元素不等于x
a[j++] = a[i]; // 移动到新的位置
}
i++; // 指针向前移动
}
a[j] = 0; // 如果最后剩余空间未满,设置最后一个元素为0作为结束标记
printf("更新后的数组: ");
for (int k = 0; k <= j; k++) {
printf("%d ", a[k]);
}
}
int main() {
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, x}; // 示例数组,其中包含一个需要删除的值x
int x_val = 5;
int n = sizeof(a) / sizeof(a[0]); // 获取数组长度
removeDuplicates(a, n, x_val);
return 0;
}
```
当你运行这段代码时,它会在数组`a`中删除所有值等于`x`的元素,并保持其他元素的相对顺序。
阅读全文