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

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

 

先写出它的容量,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然后思想就是,构造新数列,把旧数列的东西复制粘贴进去放着,然后在把新数列赋值给旧数列

 

posted @   糖子哥  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示