长度为n的顺序表L,编写一个时间复杂度为O(n),空间复杂度为O(1)的算法,该算法删除线性表中所有值为x的数据元素。
解法一:
void del_x_l_1(Sqlist &L,int x){
int k=0;
for(int i=0;i<L.length;i++){
if(L.data[i]!=x)
L.data[k++]=L.data[i];
}
L.length=k;
}
解法二:
void del_x_l_2(Sqlist &L,int x){
int k=0;
for(int i=0;i<L.length;i++){
if(L.data[i]!=x)
L.data[i-k]=L.data[i];
else
k++;
}
L.length-=k;
}