1.长度为n的顺序表中,编写一个时间复杂度为O(n),空间复杂度为O(1)的算法,用于删除线性表中所有值为x的数据元素。(满足要求的数放在第k位上) 1 #include <cstdio> 2 3 /*输出数组名为a、长度为n的数组*/ 4 void print(int *a, int n){ 5 for(int i = 0;i < n; i++){ 6 printf("%d ", a[i]); 7 } 8 puts(""); 9 } 10 11 /*解法1,第几个不等于x的数就应该在结果的第几个位置上,千万记得最后修改删除后的数组长度为k*/ 12 void f1(int *a, int n, int x){ 13 int k = 0; 14 for(int i = 0; i < n; i++){ 15 if(a[i] != x){ 16 a[k++] = a[i]; 17 } 18 } 19 n = k; 20 print(a,k); 21 } 22 23 /*解法2,用k记录等于x的个数,那么下一个不等于x的数在结果中的位置应该提前k个位置,最后数组的长度减去k*/ 24 void f2(int *a, int n, int x){ 25 int k = 0; 26 for(int i = 0; i < n; i++){ 27 if(a[i] == x) 28 k++; 29