
时间复杂度O(n),空间复杂度O(1)。
简单的问题两种不同的思路。
代码:
#include <stdio.h>
#define MAX 100
struct sqlist{
int data[MAX];
int length;
}s;
void input(sqlist *s) {
printf("请输入元素个数:");
scanf("%d",&s -> length);
printf("请输入%d个元素:",s -> length);
for(int i = ;i < s -> length;i ++) {
scanf("%d",&s -> data[i]);
}
}
void print(sqlist s) {
printf("%d\n",s.length);
for(int i = ;i < s.length;i ++) {
printf("%d ",s.data[i]);
}
putchar('\n');
}
void del_1(sqlist *s,int x) {//记录不等于x的个数
int k = ;
for(int i = ;i < s -> length;i ++) {
if(s -> data[i] != x) s -> data[k ++] = s -> data[i];
}
s -> length = k;
}
void del_2(sqlist *s,int x) {//记录等于x的个数
int k = ;
for(int i = ;i < s -> length;i ++) {
if(s -> data[i] == x) k ++;
else s -> data[i - k] = s -> data[i];
}
s -> length -= k;
}
int main() {
input(&s);
int x;
printf("请输入x:");
scanf("%d",&x);
del_1(&s,x);
print(s);
return ;
}