首页 > 其他分享 >基础数据结构之动态数组的构造

基础数据结构之动态数组的构造

时间:2023-10-25 16:46:37浏览次数:27  
标签:接着就是 逻辑 动态 数列 数组 数据结构 就是 size

现在,要自己写一个动态数组出来,这很有意思,可以让数组变得灵活高级

 

先写出它的容量,capacity,看看就是做一个箱子,看看要做多大个,这个是较为稳定的

接着就是逻辑长度size,就是箱子里实际上装了多少东西,这个就是比较容易浮动的

然后既然是动态数组,那也要建立一个最基础的数组装着

 

接下来就是方法加入元素,最简单的就是直接如上面所示,直接给array[size]赋值,往后面增添,然后size变长一位,当然,肯定要写得灵活一点,就是具体到插入哪个位置,首先就是严谨性,要限制好条件,就有了if,接着就是逻辑部分,先把插入位及它后面那部分后移,就引出了方法 arraycopyy()//1.复制的数组名,2.复制头的索引,3.尾巴的索引(如果是最后一位可不填),4.目标数组,5.目标数组头,6.复制长度。

然后就后移完成了,空出一个位置,顺利地插入element,然后还有一个逻辑上的问题,就是不管if成立否,都需要

array[size] = element;
size++;

故可以把它放到if外面,供两个add类函数共用

 

remove其实和add逻辑很像,都涉及到了平移思想,有个不一样的点,remove还需要说出谁被拿掉,所以构建一个int removed储存元素

 

接着就是扩容,如果逻辑长度等于容量,数组就满了,需要扩容,这边为了方便取整,直接cap+cap>>1;r然后思想就是,构造新数列,把旧数列的东西复制粘贴进去放着,然后在把新数列赋值给旧数列

 

标签:接着就是,逻辑,动态,数列,数组,数据结构,就是,size
From: https://www.cnblogs.com/cjtaaa/p/17787557.html

相关文章

  • JavaScript树型数据与一维数组相互转换方式
     /***@description一维数组转树形数据**/exportconstarrToTree=(data=[],conf={})=>(((data,{id='id',parentId='parentId',children='children'})=>{letresult=[]if(!Array.isArray(data)){r......
  • 树状数组
    树状数组树状数组支持的基本操作:单点修改,前缀和查询一维树状数组单点修改,区间查询对于单点修改,直接修改即可。对于区间查询,拆成\(sum(r)-sum(l-1)\)来做。区间修改,单点查询考虑在原序列的差分序列上建立树状数组。于是单点修改转化为前缀和查询。区间修改转化为单点修改......
  • 博睿动态|GOPS全球运维大会2023上海站即将开启!
    10月26日,博睿数据将应邀出席第二十一届GOPS全球运维大会,大会为期2天,侧重方向是DevOps、BizDevOps、AIOps、DevSecOps、云原生、效能度量等技术领域。博睿数据AIOps首席专家兼产品总监贺安辉受邀出席10月26日的AIOps最佳实践及解决方案专场,并将在下午15:30-16:00分享《开源工具和......
  • vue实现动态展开与折叠内联块元素
    功能需求当多个内联块元素(比如div)在一个固定宽度的父元素内自动排列换行时,如果这些元素的行数超过四行,那么默认折叠超出的部分,并在第四行末尾显示一个按钮供用户切换展开或折叠状态。在折叠状态下,为了确保展开/折叠按钮能够显示在第四行末尾,会隐藏第四行的最后一个元素。在展开状......
  • C++封装数据结构
    1.概论C++STL之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector,string,list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以......
  • 【HarmonyOS】元服务卡片展示动态数据,并定点更新卡片数据
    ​ 【关键字】元服务卡片、卡片展示动态数据、更新卡片数据 【写在前面】本篇文章主要介绍开发元服务卡片时,如何实现卡片中动态显示数据功能,并实现定时数据刷新。本篇文章通过实现定时刷新卡片中日期数据为例,讲述展示动态数据与更新数据功能。 【开发步骤】1、在卡片的......
  • 动态数据可视化有哪些工具?
     动态数据可视化工具动态数据可视化是指能够实时或动态地展示数据变化的可视化方式。以下是一些常用的动态数据可视化工具,每个工具都有其特点和适用场景。1.D3.js(Data-DrivenDocuments)D3.js是一个基于JavaScript的强大数据可视化库,它提供了丰富的功能和灵活性,可以创建......
  • 在fmx下动态生成的TText为什么不能调整大小及字体样式
    //为什么会这样呢?类似于下面这样的代码不能生效。MyLbl:=Ttext.Create(self);MyLbl.Parent:=VscrbMenuBtn;//MyLbl.Font.Size:=20;MyLbl.TextSettings.Font.Size:=20;MyLbl.Size.PlatformDefault:=false;......
  • echarts动态排序柱状图实现
    <template><divid="pubTaxesFsz"style="height:100%;width:100%"></div></template><scriptlang="ts"setupname="PubTaxesFsz">import*asechartsfrom'echarts/core';i......
  • JS树形数组扁平化
    如题,有时候需要对树形数组深层去找符合字段的那一串json,苦于循环找太费劲,索引选择扁平化,找起来方便很多lettreeList=[{id:'1',name:'水果',value:3,children:[{id:'1-1',......