顺序表的插入
📅 2026/7/15 4:48:53
👁️ 次浏览
文章目录代码为什么插入必须“从后往前”移动如果写反方向从前往后)会怎样边界条件分析重点插入位置表尾追加插入位置表头插入空间已满更新长度代码#includestdio.h#defineMaxSize10// 定义最大长度typedefstruct{intdata[MaxSize];// 静态数组存放数据元素intlength;// 顺序表当前有效长度}SqList;// 顺序表类型定义// 初始化顺序表voidInitList(SqListL){for(inti0;iMaxSize;i){L.data[i]0;// 数组全部置0清除垃圾值}L.length0;// 有效元素个数置 0代表空表}// 位序 i 处插入元素 e 位序 i 从 1 开始boolListInsert(SqListL,inti,inte){// 1. 健壮性检查 边界判断if(i1||iL.length1)returnfalse;// 2. 存储空间检查 数组存满无法插入if(L.lengthMaxSize)returnfalse;// 3. 核心移动逻辑从最后一个元素开始依次向后挪一格for(intjL.length;ji;j--)L.data[j]L.data[j-1];// 4. 插入新元素L.data[i-1]e;// 位序 i 转换为数组下标 i-1// 5. 有效长度1L.length;// 更新有效元素计数告诉程序现在表里有效元素数量 1。// 新增一个有效元素计数器必须 1删除一个计数器必须 - 1。returntrue;}intmain(){SqList L;InitList(L);ListInsert(L,3,3);// 第 3 个位置插入数字 3return0;}为什么插入必须“从后往前”移动假设当前顺序表里有数据[1, 2, 4, 5]length 4即有效元素个数为4。我们现将在位序 3即第3个位置数组下标为2插入元素 3。循环轮次j 的值执行语句物理动作内存视角数组变化下标0~4初始状态---[1, 2, 4, 5, ?]第1轮j4L.data[4]L.data[3]把下标3的5复制到下标4向后腾挪[1, 2, 4, 5, 5]第2轮j3L.data[3]L.data[2]把下标2的4复制到下标3向后腾挪[1, 2, 4, 4, 5]结束循环j2条件 ji (23) 为假退出下标2即位序3的位置空出来了[1, 2, 4, 4, 5]最后执行L.data[2] 3数组变为[1, 2, 3, 4, 5]。如果写反方向从前往后)会怎样如果写反方向从前往后 for(ji; jL.length; j)会怎样第1轮L.data[2] L.data[1]把2复制到下标2→ 数组变成 [1, 2, 2, 4, 5]。下标2的原值 4 被覆盖丢失了。后面无论怎么挪4 和 5 都再也找不回来数据彻底损坏。结论必须倒着移动保证每个元素在被覆盖前已经先被复制到后面的安全位置了。边界条件分析重点插入位置表尾追加插入位置i L.length 1表尾追加当前有 length 个元素元素之间、头尾一共会多出length 1个空位 用来插入新元素。i 1表头空位i length1表尾空位插入位置表头插入插入位置 i 1表头插入j 从 length 一直减到 1所有元素整体后移一位。执行 L.data[0] e;插入到表头。空间已满空间已满L.length MaxSize直接return false防止数组越界写入保护内存安全。更新长度数组只是存数据的容器length 是记录有效元素的计数器新增一个有效元素计数器必须 1删除一个计数器必须 - 1。L.length;更新有效元素计数告诉程序现在表里有效元素数量 1。如果插入后不更新 length后续所有代码全部逻辑错乱出现越界、读取不到元素等 bug。
1. 项目概述与核心价值最近在重构一个老旧的C服务端框架,其中一个痛点就是模块间的通信。早期为了图省事,用了不少回调函数和裸指针,代码耦合得跟意大利面似的,调试起来更是噩梦。尤其是在多线程环境下,一个对象在A线程…
📅 2026/7/15 4:48:53
最近在项目开发中,很多同学反映工作一忙起来就顾不上按时吃饭,结果不仅身体吃不消,连代码质量都跟着下降。今天我们就从技术角度聊聊不好好吃饭对开发效率的影响,并分享一套实用的健康管理方案,帮助大家在996的工作节奏…
📅 2026/7/15 4:47:52
(各位访问大哥能否留一些宝贵建议给小弟,没人的话就当个人日常blog)第三天我把聊天机器人的阻塞式输出改为流式输出,这样的输出方式更贴合主流ai。前几个版本的聊天机器人是等待模型思考完毕再全部输出(默认stream fa…
📅 2026/7/15 4:47:52
1. 项目概述:为什么选择C#来做一个“简单”的纸牌记忆游戏?乍一看,“纸牌配对记忆游戏”是个老掉牙的练手项目,网上随便一搜,用JavaScript、Python甚至Scratch都能做。那我为什么还要专门用C#来写一遍,并且…
📅 2026/7/15 5:41:17
1. SPI接口基础:从移位寄存器到全双工通信如果你在嵌入式领域摸爬滚打过几年,肯定对SPI(Serial Peripheral Interface)这个名字不陌生。它不像I2C那样有复杂的地址协议,也不像UART那样需要精确的波特率匹配,…
📅 2026/7/15 5:41:17
1. 为什么需要Vue与iframe深度集成在实际开发中,我们经常会遇到这样的场景:一个成熟的Vue项目需要集成一些遗留的老系统,或者嵌入第三方提供的功能页面。这些老系统可能是基于传统HTMLJS开发的,短期内无法用Vue重构;而…
📅 2026/7/15 5:41:17
1. 项目概述与核心价值最近在做一个智慧监考管理系统的项目,用C和Qt框架来实现。这个项目挺有意思的,它本质上是一个面向现代教育场景的桌面端应用,核心目标是把传统的人工监考流程数字化、智能化,解决监考老师工作强度大、效率低…
📅 2026/7/15 5:41:17
1. I2C调试工具概述第一次接触I2C调试是在2015年做智能手表项目时,当时遇到一个传感器死活不响应,折腾了两天才发现是I2C地址搞错了。从那时起我就养成了先用调试工具探路的习惯。I2C作为嵌入式开发中最常用的总线之一,调试工具就像医生的听诊…
📅 2026/7/15 5:41:17
【题目来源】
学而思编程:冲刺信奥
【题目描述】
不知不觉已经进入炎热的夏天,小猴发现暑假完了之后今年的CSP-J就临近比赛了,所以小猴想提前做好复习规划:小猴决定从下周一开始努力刷题备战CSP-J,他计划周一至周五…
📅 2026/7/15 5:40:17
1. COM线程模型基础与CoInitializeEx核心作用在Windows平台开发中,组件对象模型(COM)的线程处理机制一直是开发者必须掌握的底层知识。作为COM初始化的门户函数,CoInitializeEx不仅决定了对象在何种线程环境下运行,更影响着整个组件的并发性能…
📅 2026/7/15 0:00:17
1. 为什么M芯片Mac用户需要降级到Monterey? 去年刚拿到M2芯片的MacBook Pro时,我第一时间升级到了Ventura系统。结果第三天就遇到了微信闪退、Final Cut Pro渲染卡顿的问题。后来在开发者论坛发现,不少专业软件对Ventura的适配都存在问题。这…
📅 2026/7/15 0:00:17
1. 背景与核心概念在AI大模型快速发展的今天,许多开发者和研究者都面临一个现实问题:如何在有限的硬件预算下实现高效的本地大模型部署。特别是对于个人开发者和小型团队来说,购买最新的高端显卡成本高昂,而利用现有的或二手硬件资…
📅 2026/7/15 0:00:17
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/14 6:35:02
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/14 12:06:52
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/14 7:15:18
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/14 15:11:56
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/15 2:24:18
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/14 15:11:56