#include <stdio.h>
using namespace std;
#define Max 50
/*
这个题表明要删除数组中值为某个数的所有元素
同时这也伴随着整个数组的数被删除后这个数的元素会往前移动
并且数组的整体的长度会变小
*/
struct SqlList{
int a[Max]={5,2,0,1,3,1,4};
int length=7;
};
void del(SqlList &s,int x){
int k=0;//用来记录数组中值为x的数有几个决定我们往前移动多少
for(int i=0;i<s.length;i++){
if(s.a[i]==x){
k++;//找到和x向匹配的数进行记录到底有多少
}
else{
s.a[i-k]=s.a[i];//一开始k是为0的其实就是原来的数给原来的数
}
}
s.length=s.length-k;//这里的长度可以带出来
}
int main(){
SqlList s;
printf("原来的数组为:\n");
for(int i=0;i<s.length;i++){
printf("%d ",s.a[i]);
}
del(s,1);
printf("现在的数组为:\n");
for(int i=0;i<s.length;i++){//只是长度变化了,其实数组里面应该还有目前长度之外的数
printf("%d ",s.a[i]);
}
}