顺序表运算的实现,删除所有x=3的元素,初始时:i=–2,j=0,C语言
时间: 2024-09-08 16:04:39 浏览: 71
在C语言中,如果我们有一个顺序存储结构(如数组或动态链表),并且想要删除所有值为3的元素,我们可以使用双重循环。考虑到你提到的`i=-2`和`j=0`,这可能是数组的一个偏移索引,所以我们假设数组从`0`开始。
下面是一个简单的示例,如何遍历数组并删除所有值为3的元素:
```c
#include <stdio.h>
#define ARRAY_SIZE 10 // 假设我们有一个大小为10的数组
int main() {
int arr[ARRAY_SIZE] = {5, 3, 7, 3, 2, 9, 3, 6, 3, 8}; // 示例数组
int i = -1; // 初始化索引为-1,因为第一个有效元素是索引0
int j = 0; // 初始化遍历索引为0
while (i + 1 < ARRAY_SIZE) { // 避免越界,因为我们是从-1开始的
if (arr[i+1] != 3) { // 如果当前元素不是3
arr[j++] = arr[i+1]; // 将非3元素复制到新位置
}
i++; // 移动到下一个元素
}
// 数组结束时,可能还有最后一个值是3,我们将其替换为最后一个元素
if (arr[ARRAY_SIZE - 1] == 3)
arr[j++] = arr[ARRAY_SIZE - 1];
arr[j] = 0; // 确保最后一个元素被填充,表示数组结束
printf("修改后的数组:");
for (int k = 0; k <= j; k++) {
printf("%d ", arr[k]);
}
printf("\n");
return 0;
}
阅读全文