长度为n的顺序表L,删除该顺序表中所有值为X的数据元素。
算法思想:用K记录顺序表中不等于X的元素个数,扫描将不等于X的元素移动到下标k的位置,并更新K值,扫描结束后需要修改length的长度。
具体代码:
void del_x(Sqlist &L,ElemType x){
int k=0; // 记录不等于x的个数
for(int i=0;i<length;++i){
if(L.date[i] != x){
L.date[k] = L.date[i];
k++;
}
}
length = k; // 顺序表长度为k
}
时间复杂度O(N);空间复杂度O(1)。