当前位置: 首页 > article >正文

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

题目描述:删除顺序表L中第i个位置的元素,若i的输入不合法,则返回 false; 否则将被删元素赋给引用变量e,并将第i+1个元素及其后的所有元素依次往前移动一个位置,返回 true。

算法思想:删除顺序表L中第i个位置的元素的步骤如下:

合法性检查:若顺序表为空、指针为空或位置i不在有效范围(1 ≤ i ≤ length)内,返回false。

保存被删元素:将第i个元素(对应数组下标i-1)的值赋给引用变量e。

元素前移:将第i+1到表尾的所有元素依次前移一位,覆盖被删元素的位置。

更新表长:顺序表长度减1,返回true。

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

代码实现:

#include <stdbool.h>  // 使用bool类型需包含此头文件
#define MAXSIZE 100   // 假设顺序表的最大容量

typedef struct {
    int data[MAXSIZE]; // 存储元素的数组
    int length;        // 当前表长度
} SeqList;

bool ListDelete(SeqList *L, int i, int *e) {
    // 检查空指针、删除位置合法性
    if (L == NULL || i < 1 || i > L->length) {
        return false;
    }
    
    *e = L->data[i-1]; // 保存被删除元素的值(注意下标转换)
    
    // 将第i+1到末尾的元素依次前移一位
    for (int j = i; j < L->length; j++) {
        L->data[j-1] = L->data[j]; // 后一元素覆盖前一位置
    }
    
    L->length--;       // 表长度减1
    return true;
}


http://www.kler.cn/a/611715.html

相关文章:

  • 【计科】从操作系统到虚拟化技术(进程调度,内存映射,设备IO,文件、网络管理)
  • 地图(死亡细胞)
  • 基于Python的自然语言处理系列(60):使用 LangChain 构建 Multi-Vector Retriever 进行文档检索
  • C#:类型定义中使用‌问号(?)
  • CSS 如何设置父元素的透明度而不影响子元素的透明度
  • HarmonyOS之深入解析跳转支付宝小程序完成操作后如何自动返回App
  • 网站漏洞多、排名低?Scrutiny 一键化解
  • 【深度学习新浪潮】图像修复(Image Inpainting)技术综述:定义、进展与应用展望
  • cesium中label样式修改为圆角
  • BFS解决最短路径问题(使用BFS解决最短路径问题的黄金法则)
  • 内嵌式触摸显示器在工业视觉设备中的应用
  • 使用JavaAPI操作HDFS
  • 青少年编程与数学 02-011 MySQL数据库应用 19课题、存储引擎
  • 如何避免需求文档与研发实现“两张皮”
  • localhost 和 127.0.0.1 的区别
  • 机器学习模型部署:使用Flask 库的 Python Web 框架将XGBoost模型部署在服务器上(简单小模型)从模型训练到部署再到本地调用
  • mac m4 Homebrew安装MySQL 8.0
  • Java 多线程编程之 RejectedExecutionHandler 线程池拒绝策略
  • Redis的基础,经典,高级问题解答篇
  • ④(上网管理行为-ACG)主备/主主