现在,要自己写一个动态数组出来,这很有意思,可以让数组变得灵活高级
先写出它的容量,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