尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
顺序表的插入
文章目录代码为什么插入必须“从后往前”移动如果写反方向从前往后)会怎样边界条件分析重点插入位置表尾追加插入位置表头插入空间已满更新长度代码#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。
RELATED

相关推荐

基于C++17实现线程安全的信号槽机制:解决模块通信与多线程难题

基于C++17实现线程安全的信号槽机制:解决模块通信与多线程难题

1. 项目概述与核心价值最近在重构一个老旧的C服务端框架,其中一个痛点就是模块间的通信。早期为了图省事,用了不少回调函数和裸指针,代码耦合得跟意大利面似的,调试起来更是噩梦。尤其是在多线程环境下,一个对象在A线程…

📅 2026/11/9 7:01:15
基于ET框架的AI行为可视化调试面板设计与实现

基于ET框架的AI行为可视化调试面板设计与实现

1. 项目概述:为什么我们需要一个AI行为调试面板?在游戏服务器开发,尤其是MMO这类对实时性和逻辑复杂度要求极高的项目中,AI(人工智能)行为的调试一直是个老大难问题。你写了一大堆状态机、行为树&#xff0…

📅 2026/10/13 9:27:36
Cocos Creator安卓打包全攻略:从环境配置到Release签名避坑指南

Cocos Creator安卓打包全攻略:从环境配置到Release签名避坑指南

1. 项目概述:为什么安卓打包总让人头疼?如果你用 Cocos Creator 3.x 开发过游戏,并且尝试过打包成安卓 APK,那你大概率经历过这样的场景:在编辑器里跑得好好的游戏,一到打包环节,各种报错就像雨…

📅 2026/10/13 13:23:43
MORE NEWS

更多资讯

📰

海东乐都区电工证怎么报名?工地太忙根本没时间复习考试?

海东乐都区电工证怎么报名?工地太忙根本没时间复习考试? 工地太忙根本没时间复习考试,这是很多一线电工的共同困扰。尤其是像三门峡应届工程类毕业生,刚毕业就直接上工地,时间紧张,复习资料也跟不上,想报考海东乐都区电工证,却不知道从哪儿下手。其实…

📰

张连邦电工证在哪考 外省证怎么转过来最靠谱

张连邦电工证在哪考 外省证怎么转过来最靠谱 之前考的证在外省能不能转过来?这个问题几乎每个准备考张连邦电工证的工人都问过。特别是在焦作,很多建筑工人都是常年在外打工,证在手里却用不上,心里着急。张连邦电工证作为特种作业操作证的一种,不仅是持…

📰

同安电工证去哪里培训 考试怕不过怎么选机构

同安电工证去哪里培训 考试怕不过怎么选机构 怕考不过白交培训费?别急,先搞清楚【在哪考】和怎么选靠谱培训机构。 为什么选对培训机构太重要?…

📰

特种工可以代替?证书过期了不知道怎么复审延期?怎么报名一次搞懂

特种工可以代替?证书过期了不知道怎么复审延期?怎么报名一次搞懂 证书过期了不知道怎么复审延期?特种工证不按时处理,轻则影响工作,重则面临法律责任。你不是一个人,这是很多从事特种作业人员的共同痛点。尤其是像商丘水利工程这类高风险岗位,证书不合…

📰

广州哪里考电工证好 电工证过期不知道怎么复审多少钱

广州哪里考电工证好 电工证过期不知道怎么复审多少钱 证书过期了不知道怎么复审延期,很多人到了这一步才意识到特种作业操作证的重要性,尤其是电工证,不仅关系到能不能继续从事相关工作,还直接影响薪资待遇和职业发展。在广州市,考电工证的机构不少,但…

📰

徐州特种工培训机构通过率揭秘:实操考试心里没底怕挂科怎么办?

徐州特种工培训机构通过率揭秘:实操考试心里没底怕挂科怎么办? 实操考试心里没底怕挂科?这是徐州特种工培训机构学员最常遇到的问题。很多人辛辛苦苦花了几个月准备,但一上考场就紧张得手心冒汗,生怕因为一点小失误就被淘汰。尤其是对三门峡房建工程从业…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬