C++ 编写:删除线性表中所有大于指定值的元素

给定一个顺序存储的线性表,请设计一个函数删除所有值大于 maxA 的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。

函数接口定义

int Delete( int A[], int L, int maxA ) // L 是表长

其中 A 是整型数组,存储原始线性表的元素;L 是表长,即 A 中元素的个数;maxA 为待删除元素的值域下界。函数 Delete 应将 A 中所有值大于 maxA 的元素删除,同时保证表中剩余元素保持顺序存储,并且相对位置不变,最后返回删除后的表长。

解决方案

int Delete(int A[], int L, int maxA) {
    int count = 0; // 记录删除的元素个数
    for (int i = 0; i < L; i++) {
        if (A[i] <= maxA) {
            A[count++] = A[i]; // 将元素移到前面
        }
    }
    return count;
}

该函数通过遍历数组 A,将小于等于 maxA 的元素移到数组的前面,并记录删除的元素个数。最后返回 count 即为删除后的表长。

时间复杂度分析

从时间复杂度来看,该函数的时间复杂度为 O(L),其中 L 为表长。

C++ 线性表删除元素:高效删除所有大于指定值元素

原文地址: http://www.cveoy.top/t/topic/pbYy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录