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

现在,要自己写一个动态数组出来,这很有意思,可以让数组变得灵活高级
先写出它的容量,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然后思想就是,构造新数列,把旧数列的东西复制粘贴进去放着,然后在把新数列赋值给旧数列
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】