天天看點

第二章 線性表 第二節習題3

題目:

第二章 線性表 第二節習題3

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

繼續閱讀