題目:

注:本題不僅僅是要删除所有值為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;
}