用c语言写出下列代码,R7-3 顺序表删除元素 - 人邮DS(C 第2版)线性表习题2(10) 分数 30 已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。 输入格式: 第一行为无序整数集合的长度,第二行为无序整数集合,第三行为删除的值。 输出格式: 第一行为删除元素后新的无序整数集合的长度,第二行为新的整数集合。 输入样例: 7 1 9 2 9 3 9 4 9 输出样例: 4 1 2 3 4
时间: 2024-02-22 16:56:05 浏览: 93
[C语言数据结构]线性表-顺序表介绍及其基础操作函数实现
以下是代码实现:
```c
#include <stdio.h>
int main() {
int n, item;
scanf("%d", &n);
int a[n];
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
scanf("%d", &item);
int count = 0;
for (int i = 0; i < n; i++) {
if (a[i] != item) {
a[count++] = a[i];
}
}
printf("%d\n", count);
for (int i = 0; i < count; i++) {
printf("%d ", a[i]);
}
return 0;
}
```
该算法的时间复杂度为O(n),空间复杂度为O(1)。通过遍历整个线性表,将不等于待删除元素的元素依次复制到一个新的位置,并统计新线性表的长度。最后输出新线性表的长度和元素即可。
阅读全文