采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
我猜测老师的意思是如果只向数组末添加一个元素那么倒数第二个没有元素的位置就是数组中第一个没有元素的位置;这样的话从后向前跟从前向后添加才能是一样的,可是我有疑惑,在最末位置添加元素,可第一个没有元素的位置怎么会是倒数第二个呢,如果通俗的说左右,最右端就是我们添加的末尾元素,那第一个没有元素的位置不应该在最左端吗,因为从左向右最左端是第一个啊
抱歉,我没有很理解你的问题。你具体是指课程中的哪段代码?你认为应该是怎样的?
以课程官方github代码为例,这一小节代码传送门:https://github.com/liuyubobobo/Play-with-Data-Structures/blob/master/02-Arrays/03-Add-Element-in-Array/src/Array.java
在数组末添加元素(addLast)就是在size的位置添加元素,如39行所示。你标题说的:size指向数组中第一个没有元素的位置是正确的。
当我们统一实现了add(index, e)这个方法后,addLast依然是在size位置添加元素,只不过依靠调用add(size, e)来实现,如41行所示:)
我的疑惑是您在2-3课程开头那里讲课说的那句话,在数组末尾添加元素等同于在size这个位置添加元素,这是为什么呢?可是您也说过size这个变量他其实也就是指向数组中第一个没有元素的位置呀是第一个位置,而在数组末尾添加元素不是数组最后一个位置吗
在数组末尾添加元素等同于在size这个位置添加元素,是因为在我们设计的动态数组中,所有元素是按顺序排列的。也就是不管你的数组容量有多少,所有的元素都在[0, size)的区间里(相应的索引是0~size-1)。数组的容量只是由于数组这种结构的限制而产生的不能被及时使用的空间而已。他们和用户的数据没关系!你可以理解成我们一共有capacity个空座位,每来一个人(新的元素),就做到现在已经做人的位子的后面一个空位子,也就是我们这里说的“素组的末尾”,相应的索引为size。请再仔细理解一下这一小节前一分半的动画:)
已经理解,非常感谢
登录后可查看更多问答,登录/注册
动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…
10.6k 16
1.5k 17
1.4k 14
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号