第二章p19-3删除线性表中所有值为x的元素"/>
第二章p19-3删除线性表中所有值为x的元素
3.对长度为n的顺序表L,编写一个时间复杂度为O(n),空间复杂度为O(1)的算法,该算法删除线性表中所有值为x的数据元素。
方法一:
用k记录顺序表中不等于x的元素个数,边扫描边List边统计k,并将不等于x的元素向前移动k个位置,最后修改List的长度。
/*** 删除线性表中所有值为x的数据元素* */
void deleteXElem(SqList *List, ElemType x)
{int k = 0; //用于记录值不等于x的元素的个数for(int i = 0; i < List->length; i++){if(List->data[i] != x){List->data[k] = List->data[i];k ++;}}List->length = k;
}
方法二:
用k记录顺序表中等于x的元素个数,边扫描边List边统计k,并将不等于x的元素向前移动k个位置,最后修改List的长度。
/*** 删除线性表中所有值为x的数据元素* */
void deleteXElem2(SqList *List , ElemType x)
{int k = 0; //记录值为x的元素的个数for(int i = 0; i < List->length; i++){if(List->data[i] == x){k++;}else{List->data[i-k] = List->data[i];}}List->length = List->length - k;
}
更多推荐
第二章p19-3删除线性表中所有值为x的元素
发布评论