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

考研408--数据结构--day2--顺序表及其增删改查 - 指南

考研408--数据结构--day2--顺序表及其增删改查 - 指南

在这里插入图片描述
(以下内容全部来自上述课程)

目录

  • 顺序表
    • 1. 定义
    • 2. 静态分配
    • 3. 动态分配
    • 4. 顺序表的实现
    • 5. 小结
  • 顺序表的插入和删除
    • 1. 插入
    • 2. 插入的时间复杂度
    • 3. 删除
    • 4. 删除的时间复杂度
    • 5. 小结
  • 顺序表的基本操作
    • 1. 按位查找
    • 2. 按位查找的时间复杂度
    • 3. 按值查找
    • 4. 按值查找的时间复杂度
    • 5. 小结

顺序表

1. 定义

typedef struct:定义结构体。
顺序表3号。就是:就相当于学号,每个人的学号都是有顺序的,2号之前是1号,2号之后
sizeof:获取数据元素大小。
请添加图片描述

2. 静态分配

就是把顺序表的长度固定,是多大就多大,不能够调整。
标志

  • #define MaxSize 10–>定义最大长度
  • ElemType data[MaxSize];–>静态
    请添加图片描述
    代码:定义最大长度–>定义顺序表–>初始化顺序表–>main(使用顺序表)
    内存:分配空间–>设置默认值–>将顺序表初始长度设置为0
    请添加图片描述
    如果初始化顺序表的时候没有设置素材元素的默认值,内存中遗留的脏内容可能会影响后续存入的素材。
    请添加图片描述
    要是最开始定义了一个空间很大的顺序表,不一定都会用到,会导致空间浪费
    请添加图片描述

3. 动态分配

标志

4. 顺序表的实现

随机访问:就像学号,你找几号,大概看在名单的哪个位置直接就能找到,所以时间复杂度为O(1)
请添加图片描述

5. 小结

请添加图片描述

顺序表的插入和删除

请添加图片描述

1. 插入

这样想,如果你的班级是用名字首字母的顺序排学号的,你是10号,有个插班生来到你的班级正好名字首字母在你之前,更好取代了你的位置,也就是,他变成了10号,你变成了11号,甚至连带着你之后所有的人的学号都必须+1。
请添加图片描述
插入方法的参数:在哪里插入?–>顺序表,插入的位置?–>位序,插入谁?–>插入元素
注意:位序和数组下标的区别,数组下标从0开始,所以会比位序少1。
请添加图片描述
请添加图片描述

2. 插入的时间复杂度

请添加图片描述

3. 删除

书接上文,插班生在你的班级呆了两天就走了,所以你又变回10号了,连带着你后面的所有人的学号也要-1,变回自己之前的学号。
请添加图片描述
&:引用符号,代表返回数值,源于后续需要输出e的值,所以就算把e删掉了,也要复制一份留在输出的时候用。
请添加图片描述
如果e的前面没有&的话,删掉了就真的删掉了,就无法覆盖main中e的初始值-1,所以输出时就出现了错误。
请添加图片描述
L也是同样,能够理解为有&就允许覆盖main中的初始L,所以在&L中的操作就可以同步到main的初始L上。
请添加图片描述
方法中的L:mian中的L的复制品
main中的L:初始L
&:同步操作
请添加图片描述

4. 删除的时间复杂度

请添加图片描述

5. 小结

请添加图片描述

顺序表的基本操作

请添加图片描述

1. 按位查找

学号直查。
查找参数:在哪里找?–>顺序表,找哪位?–>位序
请添加图片描述
请添加图片描述
ElemType的类型不同,占的字节也不同,就会导致指针指向的位置也不同。
如果占6B,指针指向的位置是每隔6B;如果占4B,指针指向的位置是每隔4B。
请添加图片描述
请添加图片描述

2. 按位查找的时间复杂度

谁了。就是类似于直接找学号,嗯,一秒钟就知道这个学号
请添加图片描述

3. 按值查找

嗯,这次不找学号了,直接找人。
请添加图片描述
请添加图片描述

结构类型的比较
请添加图片描述

4. 按值查找的时间复杂度

请添加图片描述

5. 小结

请添加图片描述

http://www.jsqmd.com/news/89027/

相关文章:

  • 强化学习Sarsa求最优策略
  • 基于单片机的PID调节脉动真空灭菌器上位机远程监控设计
  • JS 加密绕过大杀器!SpiderX 自动化工具横空出世,安全人直接封神
  • 【time-rs】time库 ComponentRange 错误类型详解(error/component_range.rs)
  • 一文详解Java中Thread、ThreadGroup 和 ThreadLocal<T> 三者的区别和用途
  • 基于单片机的安全带长度高度拉力监测与自动锁紧控制系统设计
  • std::promise 重难点
  • Qt定时执行:槽函数并非必须
  • 大梵公考:国考省考每一年的岗位一样吗?
  • 基于单片机的井盖安全监测与报警上位机监测系统设计
  • 告别低效爆破!Spray 号称 “目录爆破天花板”,实测效果惊到我了!
  • 大梵公考:国考和省考二选一怎么选?
  • 基于51单片机与ADC0808的数字电压表设计
  • 基于SpringBoot的智慧生活商城系统
  • 华为OSPF详解
  • 基于单片机的家庭防盗防火智能门窗报警系统设计
  • 基于单片机的多功能LCD音乐播放器设计
  • 帅!夸克网盘免费领取1TB空间教程 !
  • 每日一个C++知识点|异步编程
  • 探索非线性电液伺服系统的模型预测控制(MPC)之旅
  • Simulink双馈风机稳态模型:从理论到实践
  • 基于单片机的火焰与温度联动检测及声光灭火控制系统
  • 探索三相、五相电机的容错控制奥秘
  • 完整教程:【Nginx 】Nginx 部署前端 vue 项目
  • MATLAB 风力发电系统低电压穿越之串电阻策略探索
  • Best 5 Anime AI Video Tools in 2026 (Free)
  • 探索 S7 - 1200 地铁屏蔽门控制系统
  • 探索高压无桥PFC:原理图、PCB与源代码之旅
  • Java中如何检测死锁?如何预防和避免线程死锁?
  • 自动化测试-关键数据记录(日志+截图+页面源码)