順序表 | 刪除順序表中的某個元素


刪除順序表中的某個元素

實現1:(查找到與value相同的元素,將指針不斷右移知道與value不同)

C++代碼:

void del_elem(int *sqList,int value,int & length){
    int i,d=0;
    for(i=0;i<length-d;i++){
        while(sqList[i+d]==value){
            d++;
        }
        sqList[i]=sqList[i+d];
    }
    length-=d;
}

注意點:記得使用while語句做判斷,不然不能刪除連續的value

實現效果:

仿王道偽代碼:

 1 void del_x_l(sqList & L,ElemType x){
 2     int i,d=0;
 3     for(i=0;i<sqList.length-d;i++){
 4         while(sqList.data[i+d]==x){
 5             d++;
 6         }
 7         sqList.data[i]=sqList.data[i+d];
 8     }
 9     sqList.length-=d;
10 }

王道P20 T3

實現2:(用輔助下標k記錄與value不同的元素)

C++代碼:

1 void del_elem(int *sqList,int value,int & length){
2     int i,k=0;
3     for(i=0;i<length;i++){
4         if(sqList[i]!=value){
5             sqList[k++]=sqList[i];
6         }
7     }
8     length=k;
9 }

實現3:(用k記錄與value相同的元素數量)

C++代碼:

void del_elem(int *sqList,int value,int & length){
    int i,k=0;
    for(i=0;i<length;i++){
        if(sqList[i]==value){
            k++;
        }else{
            sqList[i-k]=sqList[i];
        }
    }
    length-=k;
}

注意點:不能寫成 sqList[i]=sqList[i-k];  ,避免邏輯上的錯誤

 


 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM