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

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

题目描述:顺序表L的元素递增有序排列,设计一个算法在插入元素x后保持该顺序表仍然递增有序排列,插入成功后返回插入元素所在位置,不成功返回-1

算法思想:在递增有序的顺序表中插入元素 x 并保持有序性,步骤如下:

合法性检查:若顺序表已满(length == MAXSIZE)或指针为空,插入失败,返回 -1。

查找插入位置:遍历顺序表,找到第一个大于等于 x 的元素的位置 i;若所有元素均小于 x,则插入到表尾(i = length)。

元素后移:从表尾开始,将位置 i 及之后的元素全部后移一位,腾出插入位置。

插入元素:将 x 存入位置 i,表长加 1,返回插入位置 i。

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

代码实现:

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

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

int InsertOrder(SeqList *L, int x) {
    // 检查表是否已满或指针为空
    if (L == NULL || L->length >= MAXSIZE) {
        return -1;
    }
    
    int i;
    // 找到第一个大于等于x的元素的位置
    for (i = 0; i < L->length; i++) {
        if (L->data[i] >= x) {
            break;
        }
    }
    // 若所有元素均小于x,i此时等于length
    
    // 从后向前移动元素,腾出插入位置
    for (int j = L->length; j > i; j--) {
        L->data[j] = L->data[j - 1];
    }
    
    L->data[i] = x;  // 插入x
    L->length++;     // 表长增加
    return i;        // 返回插入位置
}


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

相关文章:

  • 国际机构Gartner发布2025年网络安全趋势
  • 微软KBLaM:当语言模型学会“查字典”的下一代AI革命
  • 信息系统安全保护等级详解
  • 一文读懂Python之json模块(33)
  • Axure RP设计软件中的各种函数:包括数字、数学、字符串、时间及中继器函数,详细解释了各函数的用途、参数及其应用场景。
  • SpringMVC请求与响应深度解析:从核心原理到高级实践
  • 吴恩达机器学习笔记复盘(十一)逻辑回归的代价和损失函数
  • 扭蛋机小程序开发,潮玩娱乐消费风口下的机遇
  • 右击没有Word、PPT、Excel功能
  • 蓝桥与力扣刷题(蓝桥 蓝桥骑士)
  • Centos 前准备工作
  • Rust vs. Go: 性能测试(2025)
  • 深入解析libsunrpc:构建分布式系统的核心RPC库
  • 考研408-数据结构完整代码 线性表的链式存储结构 - 单链表
  • 微商生态的技术重构:定制开发开源AI智能名片与S2B2C商城小程序源码的赋能逻辑
  • 登录接口带验证码自动化(tesseract-OCR)
  • Crypto Architecture Kit简介
  • DiskGenius 硬盘管理工具下载+D盘空间扩容给C盘教程
  • ZIP_STORED和ZIP_LZMA没有compresslevel参数!
  • Scala 简介