为了账号安全,请及时绑定邮箱和手机立即绑定

清空队列的时候

  1. 为什么不需要将数组中的元素赋值为0来清空队列中的元素,而仅仅是设置头、尾、长度为0?

  2. 如果说清空后再插入队列的新值会覆盖旧值,那么考虑一种情况,假如一个队列10个元素,全部填满,然后按照视频中的方法清空队列,这时候,再次操作队列,只插入5个元素,那是不是会出现读取该队列的时候该队列依然是10个元素的情况呢?(5个新入队的,5个旧值)

正在回答

2 回答

  1. 仅仅将元素赋值为0,0也是一个int 数值占据内存空间,并未起到清空队列的作用。

  2. 清空队列的时候已经设置长度为零,再次插入数值的时候长度重新从零计数,插入5个长度增到5,不会出现再次读取的时候长度还是10 的情况

0 回复 有任何疑惑可以回复我~

谢谢你!不过对于第二个问题,我的理解是,长度分为数组长度m_length和已经入队的对象长度m_used两种。事实上清零是将m_used清零,而m_length依然没变,所以在我上面假设的情况下,倘若再读取m[i],其中5<i<m_length,是会读取到以前的旧值的。虽然说实际情况下i的上限是m_used-1,正常情况下不会读取到后面的值,但是这样清空数组会不会有些问题呢。(因为值并没有被清空,还是存在堆内存里面)

0 回复 有任何疑惑可以回复我~
#1

暗夜丶秋风

我感觉的话,如果按照你说的方式的,那么就需要销毁队列再去重现创建队列,那样子是不是会有点不符合队列的概念?因为那相当于开辟了一个新的队列去销毁旧的队列而已
2019-04-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

清空队列的时候

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信