-
题目:对长度为n的顺序表L,编写一个时间复杂度为O(n),空间复杂度为O(1)的算法,该算法删除顺序表中所有值为x的数据元素
-
方法1
cpp
void del_x_1(SqList &L,ElemType x){
int k=0,i;
for(i=0;i<L.length;i++){
if(L.data[i]!=x){
L.data[k]=L.data[i];
k++;
}
}
L.length=k;
}
-
方法2
cpp
void del_x_2(SqList &L,ElemType x){
int k=0,i=0;
while(i<L.length){
if(L.data[i]==x)
k++;
else
L.data[i-k]=L.data[i];//当前元素前移动k个位置
i++;
}
L.length=L.length-k;
}