题目:
注:本题不仅仅是要删除所有值为x的数据元素,还要用后面的元素来顶上前面的位置
算法分析:
(1) 当判断条件为相等时:
1)使用一个计数器来记录哪些等于x的元素
2)当出现不等的情况时,把当前元素前移(i-k)位;
(2)当判断条件为不相等时:
1)使用一个计数器来记录,当出现不等的情况时,并将这个元素保存在计数器的原有的位置上起来
2)将计数器++;
详细编码:
//方法一:判断条件为相等的
void Del(sqlist L,int x)
{
int len=L.length();
int k=0;
for(int i=0;i<len;i++)
{
if(L[i]==x)
{
k++;
}
else
L[i-k]=L[i];//当前元素前移
}
len=len-k;
}
//方法二:判断条件为不等的
void Del(sqlist L,int x)
{
int len=L.length();
int k=0;
for(int i=0;i<len;i++)
{
if(L[i]!=x)
{
L[k]=L[i];k++;
}
}
len=len-k;
}