数据结构每日一题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;
}
相关推荐
senijusene26 分钟前
数据结构与算法:队列与树形结构详细总结
开发语言·数据结构·算法
青桔柠薯片27 分钟前
数据结构:队列,二叉树
数据结构
杜家老五27 分钟前
综合实力与专业服务深度解析 2026北京网站制作公司六大优选
数据结构·算法·线性回归·启发式算法·模拟退火算法
寄存器漫游者1 小时前
数据结构:带头节点单链表
c语言·数据结构
鹿角片ljp1 小时前
力扣9.回文数-转字符双指针和反转数字
java·数据结构·算法
梦梦代码精2 小时前
开源、免费、可商用:BuildingAI一站式体验报告
开发语言·前端·数据结构·人工智能·后端·开源·知识图谱
what丶k5 小时前
深度解析:以Kafka为例,消息队列消费幂等性的实现方案与生产实践
java·数据结构·kafka
爱敲代码的TOM6 小时前
基础算法技巧总结2(算法技巧零碎点,基础数据结构,数论模板)
数据结构·算法
惊讶的猫7 小时前
InnoDB选用B+树作为索引的原因
数据结构·b树
历程里程碑7 小时前
子串-----和为 K 的子数组
java·数据结构·c++·python·算法·leetcode·tornado