数据结构每日一题day6(顺序表)★★★★★

题目描述:对长度为n的顺序表L,删除顺序表中所有值为x的数据元素。

算法思想:

双指针覆盖法:使用两个指针(逻辑上的索引),一个遍历原数组(i),另一个记录保留元素的位置(k)。

筛选保留元素:遍历时,若当前元素不等于x,将其复制到k位置,并递增k。

更新表长:遍历结束后,将顺序表长度设为k,实现原地删除所有x元素。

复杂度分析:时间复杂度O(n)空间复杂度O(1)

代码实现:

cpp 复制代码
#include <stdbool.h>
#define MAXSIZE 100  // 假设顺序表最大容量

typedef struct {
    int data[MAXSIZE];
    int length;
} SeqList;

bool DeleteAllX(SeqList *L, int x) {
    // 检查空指针
    if (L == NULL) {
        return false;
    }
    int k = 0;  // 记录保留元素的位置
    for (int i = 0; i < L->length; i++) {
        // 若当前元素不等于x,保留到位置k
        if (L->data[i] != x) {
            L->data[k++] = L->data[i];
        }
    }
    L->length = k;  // 更新表长为保留元素的数量
    return true;
}
相关推荐
huang5791473 分钟前
从缓存行角度优化链表遍历:批处理与预取策略
数据结构·链表·缓存
吞下星星的少年·-·9 小时前
The 2026 ICPC Asia East Continent Online Contest (II)(构造)
数据结构·算法
Msshu12312 小时前
2~5串锂电快充优选|XSP36 Type‑C升压/升降压快充管理芯片
数据结构·随机森林·贪心算法·排序算法·线性回归·启发式算法
动词ing15 小时前
【学习笔记】数据结构栈与队列(栈先进后出+队列先进先出+括号匹配+消消乐模型)
数据结构·笔记·学习
a1879272183115 小时前
【算法】链表(二):链表上的双指针——变速、异链与定距,和一份路程账本
数据结构·算法·leetcode·链表·go·指针·环形链表
zcmodeltech16 小时前
火电厂模型能演示冷态启动和故障处理吗?——基于STM32与Modbus RTU的集控实训控制系统设计
数据结构·stm32·单片机·嵌入式硬件·能源
Doubbbbbbble云17 小时前
区间合并问题的常见算法模式与优化思路4
java·数据结构·算法
David猪大卫17 小时前
【C++修炼】哈希表的实现
数据结构·c++·笔记·学习·算法·哈希算法·散列表
linx29519 小时前
单元九 · 零基础路线图-第 7–9 周·类与 RAII
c语言·开发语言·数据结构·c++·嵌入式硬件·算法
布莱克60519 小时前
C++ 七大排序算法详解:选择、冒泡、插入、计数、堆、快速与归并排序
数据结构·c++·算法·排序算法