数据结构|顺序表的应用:删除其中所有值等于x的元素,要求算法的时间复杂度为O(n),空间复杂度为0(1)
其实方法一和方法二的思路是类似的,推荐大家用方法2,代码简洁。
·
顺序表的应用:
删除其中所有值等于x的元素,要求算法的时间复杂度为O(n),空间复杂度为0(1)
这里介绍三种方法:
方法一:
void DeleteX(seqlist*& L, ElemType x) {
int i = 0,j=0,k=0;
//方法1
while (i<L->length)
{
if (L->data[i] != x) {
//不是x
L->data[j] = L->data[i];
j++;
}
else {
//是x
k++;
}
i++;
}
//最后计算长度(减去k)
L->length -= k;
}
方法2:
void DeleteX(seqlist*& L, ElemType x) {
int i = 0,j=0,k=0;
for (i = 0; i < L->length; i++) {
if (L->data[i] != x) {
//不是x
L->data[j] = L->data[i];
j++;
}
}
L->length = j;
}
其实方法一和方法二的思路是类似的,推荐大家用方法2,代码简洁
方法3:
void DeleteX(seqlist*& L, ElemType x) {
int i = 0,j=0,k=0;
while (i<L->length)
{
if (L->data[i] == x) {
//是x
k++;
}
else {
//不是x
L->data[i - k] = L->data[i];
}
i++;
}
L->length -= k;
}

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)