需求:編寫算法,實現刪除當前順序表中所有值為X的元素,並使此操作的時間復雜度為O(n),其中n為線性表的長度。
分析: 1,從順序表的表頭依次掃描,遇到值為X的數據元素就將其刪掉,直到掃描最后一個元素。
順序表刪除一個元素時間復雜度為O(n),要對n個元素處理,所以時間復雜度為O(n^2),不符合題意。
2,先設計一個計數變量k,用來記錄不等於X的值得個數,初始值為0,一邊掃描的時候一邊統計,當統計到K個不
等於X的值的數時,將其放到第K個存放位置,最后修改長度為K。
1 //刪除順序表重復元素 2 public void del_x(Object x) { 3 int k=0; 4 for(int i=0;i<curLen;i++){ 5 if(!listElem[i].equals(x)){ 6 listElem[k++]=listElem[i]; 7 } 8 } 9 curLen=k; 10 }
