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

【初阶数据结构】连续空间的秩序之舞: 顺序表

深入浅出顺序表 点击展开/收起 文章目录文章目录深入浅出顺序表*1.1 顺序表的定义**1.2 顺序表的初始化与销毁**1.3 顺序表核心讲解之增删改查**二.顺序表的特点**三.经典例题实践顺序表*1.删除顺序表中与val值相同的数并返回删除后的数组长度2.链接连个有序数组,并使合并后的两个数组有序3.旋转数组,输入一个K值然数组旋转希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力## 一.什么是顺序表?顺序表简单来说,顺序表就是数组,不过区别是他可以尽心增容,实现比数组更为精致的使用,可以实现自由增容,和柔性数组功能上有异曲同工之妙,当然他也有他的局限性,请听我为你娓娓道来.1.1 顺序表的定义typedefintSLDataType;typedefstructSeqList{SLDataType*arr;intsize;intcapacity;}SL;SLDataType,作用就是我们可以在这里把类型不写死,后续想改类型直接改typedef中间的就行不用一个一个改很方便.1.2 顺序表的初始化与销毁在这里我们首先对顺序表进行初始化和销毁讲解1.21 顺序表的初始化初始化我们要将指针置为空,要将空间大小和数组大小也一并改到0,为增删改查做好准备工作voidSLInit(SL*ps){ps-arrNULL;ps-capacityps-size0;}1.22 顺序表的销毁使用完顺序表我们需要释放所开辟的空间,防止内存泄漏,养成编程好习惯voidSLDestory(SL*ps){if(ps-arr){free(ps-arr);}ps-arrNULL;}1.3 顺序表核心讲解之增删改查1.31 顺序表的增加数据当然我们想要实现插入过程必然要先检查一下空间够不够,这就引出了检查空间操作空间大小检查与增容操作voidSLCheckCapacity(SL*ps){if(ps-capacityps-size){intnewcapacityps-capacity0?4:(ps-capacity)*2;//注意我们这里使用realloc是为了满足在空间不够的时候进行原有基础扩容SL*tmprealloc(ps-arr,sizeof(SLDataType)*newcapacity);if(tmpNULL){//扩容检查perror(realloc fail !);exit(1);}ps-arrtmp;ps-capacitynewcapacity;}}1.311 顺序表的头插voidSLPushFront(SL*ps,SLDataType x){assert(ps);//要进行指针检查因为我们在下面操作中会用到ps解引用所以ps不可以为空指针SLCheckCapacity(ps);for(intips-size;i0;i--){//在头插时我们的思路是把每个元素整体往后移一位把头位置空出来给要插入的元素//当然我们要不数据整体往后挪要从后挪,从前面挪会覆盖数据ps-arr[i]ps-arr[i-1];}ps-arr[0]x;ps-size;}1.312顺序表的尾插voidSLPushBack(SL*ps,SLDataType x){assert(ps);//要进行指针检查因为我们在下面操作中会用到ps解引用所以ps不可以为空指针SLCheckCapacity(ps);ps-arr[ps-size]x;}1.313顺序表的任意pos位置插入在这里我们先实现了顺序表的头插尾插,这事就有人想了我么就可以在顺序表的任意位置插入吗,有的兄弟有的voidSLInsert(SL*ps,intpos,SLDataType x){assert(ps);assert(posps-size);//你可以在任意位置插入你不能够超出顺序表大小//不可以在一个没有的位置插入数据所以要断言一下for(intips-size;ipos;i--){//这里来的逻辑与头插类似pos点以后的位置整体往后挪ps-arr[i]ps-arr[i-1];}ps-arr[pos]x;ps-size;}1.32顺序表删除数据删除数据要注意首先顺序表要有数据所以开始之前要断言一下1.321 顺序表的头删voidSLPopFront(SL*ps){assert(ps);assert(ps-size0);for(inti0;ips-size-1;i){ps-arr[i]ps-arr[i1];}ps-size--;}1.322顺序表的尾删voidSLPopBack(SL*ps){assert(ps);assert(ps-size);ps-size--;}1.323顺序表的任意pos位置删除voidSLErase(SL*ps,intpos){assert(ps);assert(ps-size);assert(posps-size);//与插入一样删除的点要存在for(intipos;ips-size-1;i){ps-arr[i]ps-arr[i1];}ps-size--;}1.34修改数据voidSLModify(SL*ps,SLDataType x,intpos){assert(ps);assert(posps-size);ps-a[pos]x;}1.34查找数据查找数据很简单思路是我们定义一个flag找到找到就加一没找到就是0然后用if–else进行判断voidSLFind(SL*ps,SLDataType x){assert(ps);intflag0;for(inti0;ips-size;i){if(ps-arr[i]x){printf(找到了下标为%d\n,i);flag;}}if(flag0){printf(该组数据中没有要查找的数据);}}二.顺序表的特点优点可根据自己插入的数据多少,自动增容,访问起来很方便,可直接根据下表访问,在存储内存上地址是连续的,当Cpu要访问数据时,可以将一整块数据拉去到缓存中备用,提升访问速度缺点realloc扩容影响存在一定的空间浪费,pos点插入删除时O(N)的时间复杂度效率低下三.经典例题实践顺序表1.删除顺序表中与val值相同的数并返回删除后的数组长度每次遇到val src就跳过dst就会覆盖掉val值从而实现删除val值intdel(int*p,intval,intarrsize){intsrc0;intdst0;while(srcarrsize){if(p[src]val){src;}else{p[dst]p[src];}}returndst;}intmain(){intarr[]{1,2,2,3,3,31,2,12};intval0;printf(请输入val);scanf(%d,val);intretdel(arr,val,8);printf(数组长度为%d\n,ret);for(inti0;iret;i){printf(arr[%d]%d ,i,arr[i]);}}2.链接连个有序数组,并使合并后的两个数组有序定义三个指针,因为是有序链表,所以我们从后往前插入合并,从前往后会被覆盖连个链表末尾比大小,大的往后放,当l2中有剩余,l10时,我们直接把l2插入数组1即可反之l20,l1还有剩余,则数组已合并好了voidmerge(int*p1,int*p2,intl1,intl2,intl3){while(l10||l20){if(p1[l1]p2[l2]){p1[l3--]p2[l2--];}else{p1[l3--]p1[l1--];}}if(l10){while(l3){p1[l3--]p2[l2--];}}}intmain(){intarr1[]{1,2,3,4,0,0};intarr2[]{1,2};merge(arr1,arr2,3,1,5);for(inti0;i6;i){printf(arr[%d]%d ,i,arr1[i]);}}3.旋转数组,输入一个K值然数组旋转思路先旋转前k个数,再旋转后n-1-k个数再整体旋转这里我们k做了处理取余运算,因为旋转周期为n,在这里旋转k个数kn时我们可以等价于旋转k%n次做一个简化voidreverse(int*p,intleft,intright){inttmp0;while(leftright){tmpp[left];p[left]p[right];p[right]tmp;}}intmain(){intk0;printf(输入一个k值使数组旋转k位);scanf(%d,k);kk%6;intarr[]{1,2,3,5,4,43};reverse(arr,0,5-k);reverse(arr,6-k,5);reverse(arr,0,5);for(inti0;i6;i){printf(arr[%d]%d ,i,arr[i]);}}希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力

相关文章:

【初阶数据结构】连续空间的秩序之舞: 顺序表

深入浅出顺序表 📖 点击展开/收起 文章目录 文章目录深入浅出顺序表*1.1 顺序表的定义**1.2 顺序表的初始化与销毁**1.3 顺序表核心讲解之增删改查**二.顺序表的特点**三.经典例题实践顺序表*1.删除顺序表中与val值相同的数并返回删除后的数组长度2.链接连个有序数组…...

免费使用云服务器训练深度学习模型

目前应该有很多课程设计或者毕业设计都是关于深度学习的,如果电脑上没有GPU的话训练一个模型需要很长时间,但是目前可以从很多云服务器上免费额度进行训练(新用户),这里记录一下使用腾讯云免费进行模型训练的流程&…...

第十四届蓝桥杯省赛C/C++ 大学 B 组 第五题 接龙数列

本题是一个比较基础的线性dp的题目。关于题目中所给的N个整数A1,A2.....AN,我们可以通过输入字符串的方式得到第一个值a和某尾的值b,对于以值b结尾的整数序列的最大值,我们只需用以值a结尾的整数序列最大值1即可。最后遍历结尾的可…...

【AI CTO视角】算力不是堆资源,而是一场精细化工程

经常和行业内的朋友交流,发现一个普遍现象:一提到AI算力建设,很多人的第一反应还是堆卡、扩集群、上规模,仿佛GPU数量上去了,算力竞争力自然就来了。 但从实际落地与商业化视角看,尤其在大模型规模化服务、…...

突破单车智能瓶颈:DAIR-V2X车路协同系统全栈实践指南

突破单车智能瓶颈:DAIR-V2X车路协同系统全栈实践指南 【免费下载链接】DAIR-V2X 项目地址: https://gitcode.com/gh_mirrors/da/DAIR-V2X 在自动驾驶技术的发展历程中,单车智能正面临难以逾越的感知边界。当车辆行驶至复杂路口或遭遇恶劣天气时&…...

AI图文识别 VS 人类学习|后Transformer时代

AI怎么识别是哪部小说总结前置: 视觉编码器负责把图片“翻译”成一种数学语言(向量),告诉大模型:“嘿,这里有一堆黑线条组成了这种形状”。然后大模型根据它的知识库反应过来:“哦,这…...

周测复盘【前缀和and差分】

其实存了三个草稿没发,因为题解半路解不出来了。 花了四十分钟搞三个平台关联,最后一道题还是没来得及交上哈哈,OK直接进入正题 题目A Atcoder Trifecta 题目翻译: 编号为1到N的N匹马进行了一场比赛 所有马匹同时起跑&#x…...

019、FreeRTOS-MPU:内存保护单元支持

019、FreeRTOS-MPU:内存保护单元支持 从一次深夜调试说起 上周三凌晨两点,产线测试板突然重启。日志显示任务A写入了任务B的数据区,导致MPU触发MemManage异常。硬件同事坚持“MPU配置没问题”,软件同事咬定“代码逻辑没问题”——这种场景太熟悉了。最终发现是任务栈溢出…...

Meta推出由高薪超级智能实验室研发的全新AI模型

Meta于本周三正式发布了其最新人工智能模型,这也是该公司组建一支高薪团队以在AI赛道上与竞争对手展开较量后推出的首个重磅成果。这款名为Muse Spark的新模型由Meta超级智能实验室打造。该实验室汇聚了一批来自各大AI公司的顶尖人才,于去年正式成立&…...

Phi-4-Reasoning-Vision开源大模型:支持ONNX Runtime加速部署

Phi-4-Reasoning-Vision开源大模型:支持ONNX Runtime加速部署 1. 项目概述 Phi-4-Reasoning-Vision是一款基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具,专为双卡RTX 4090环境优化。这个工具严格遵循官方SYSTEM PROMPT规范&…...

Meta携全新模型Muse Spark重返AI竞争赛道

Meta超级智能实验室正式发布旗下首款模型,这也是自马克扎克伯格斥巨资对公司AI体系进行全面改革以来的重要里程碑。该模型名为Muse Spark,目前已接入美国市场的Meta AI应用程序及Meta AI官网。据官方公告,未来数周内,Muse Spark还…...

电脑无法升级Windows 11?ChromeOS Flex是个不错的替代方案

谷歌再次提醒用户:即便你使用的是PC,也不必被微软的操作系统所束缚。事实上,这家科技巨头正在让用户切换到ChromeOS Flex变得前所未有的简单。谷歌近期与二手电子产品公司Back Market达成新合作,现已推出ChromeOS Flex USB安装套件…...

突破语言壁垒:FanControl本地化引擎深度配置指南

突破语言壁垒:FanControl本地化引擎深度配置指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanC…...

周鸿祎西安交大演讲:AI时代青年的机遇与挑战

【赓续“西迁精神”,驾驭AI重塑竞争力】近日,西安交通大学迎来建校130周年暨西迁70周年纪念大会,360集团创始人、西安交大杰出校友周鸿祎重返母校发表主旨演讲。他勉励青年学子赓续“西迁精神”,坚守“解决真问题”的底色。在人工…...

GoCodingInMyWay嘶

一、什么是 Q 饱和运算? 1. 核心痛点:普通运算的 “数值回绕” 普通算术运算(如 ADD/SUB)溢出时,数值会按补码规则 “回绕”,导致结果完全错误: 示例:int8_t 类型最大值 127 1 → 结…...

YOLO-Master 与 YOLO 开始嫡

AI Agent 时代的沙箱需求 从 Copilot 到 Agent:执行能力的质变 在生成式 AI 的早期阶段,应用主要以“Copilot”形式存在,AI 仅作为辅助生成建议。然而,随着 AutoGPT、BabyAGI 以及 OpenAI Code Interpreter(现为 Advan…...

2026.04.07随记

1、PyTorch1、dir(模块):查看任意模块的方法2、X.sum(0, keepdimTrue):keepdimTrue保留维度X torch.tensor([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]) # (2,3) X.sum(0, keepdimTrue), X.sum(1, keepdimTrue)…...

从零构建大模型--实操--搭建python环境

区分pip conda pip pip Python 官方自带的安装工具 你只要装了 Python,就自动自带 pip,不需要额外装。 作用: 安装各种 Python 库:pip install 库名卸载、更新、查看已安装的库 它是纯 Python 官方工具,只管 Python 相…...

MBR扩展分区的结构分析

由于MBR仅仅为分区表保留了64字节的存储空间,而每个分区的参数占据16字节,所以MBR扇区中总计可以存储4个分区表表项的数据。对于实际情况,4个分区不能满足需求,当超过四个分区时,系统会自动将第四个分区变成扩展分区&a…...

跨境电商Shopify 的对接开发

在 2026 年的跨境电商环境中,Shopify 的对接开发已不再仅仅是“铺货”和“改模板”,而是向高度自动化(AI-Driven)、无头电商(Headless)以及全球本地化(Hyper-Localization)深度演进。…...

测试实录Android 16 平板首板测试实录:857条用例,101个FAIL,这些坑你踩过吗?

...

反向跟单为什么总以失败告终?这正是大多数人转向复制跟单的真相

你知道什么是反向跟单吗?简单说,就是找到一批持续亏损的交易者,用专业跟单软件跟踪他们的操作,然后与他们做完全相反的交易——他们做多,你就做空;他们做空,你就做多。只要他们亏损多少&#xf…...

高效备份QQ空间历史数据:GetQzonehistory的本地化解决方案

高效备份QQ空间历史数据:GetQzonehistory的本地化解决方案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾担心多年积累的QQ空间说说会因账号异常或平台政策调整而永…...

BetterGenshinImpact多开功能终极指南:同时管理多个原神账号的完整方案

BetterGenshinImpact多开功能终极指南:同时管理多个原神账号的完整方案 【免费下载链接】better-genshin-impact 📦BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙…...

2025届必备的AI学术网站解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于内容创作里,要是过度去依赖AIGC,那么便兴许会致使文本欠缺人性化的…...

3个技术维度重构教育评价:OCRAutoScore的智能阅卷革新

3个技术维度重构教育评价:OCRAutoScore的智能阅卷革新 【免费下载链接】OCRAutoScore OCR自动化阅卷项目 项目地址: https://gitcode.com/gh_mirrors/oc/OCRAutoScore 教育评价领域正面临数字化转型的关键期,传统阅卷模式在大规模考试场景下逐渐暴…...

看懂 Dependency Analyzer:从 SQL 依赖到性能复杂度,系统拆解 ABAP CDS 视图的隐藏结构

在做 ABAP CDS 建模时,很多开发者都会遇到一种很典型的困惑:表面上看,当前这个 CDS 视图只是从几个字段里做了投影,代码也不算长;可一到激活、预览数据、做 OData 暴露,甚至进入 RAP 场景以后,系统表现却突然变得复杂,查询变慢,层级难以理解,出了问题也很难定位。造成…...

2026届最火的五大降重复率神器横评

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 旨在降低文本机器生成特征的降AI工具,是为了规避自动化检测模型的识别&#xff0…...

第8章 流程控制-8.3 循环结构

循环结构就是让程序不断地重复执行同一段代码。Python中的循环结构有3种,分别是while循环、for循环和循环嵌套。8.3.1 while循环while循环可以通过while语句和while…else语句实现。1.while语句while语句首先会判断其条件表达式是否成立,如果条件表达式成…...

BiliTools:重构B站资源管理的跨平台工具箱

BiliTools:重构B站资源管理的跨平台工具箱 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools 价值定位&…...