波波老师,循环队列这里浪费的那一个空间我有点疑问。
来源:3-6 循环队列
慕虎3444883
2018-07-24
波波老师,请问循环队列这里,您说的有目的性的浪费一个空间是 为了方便表示队列为空和队列为满吧?可是队列是否为空也可以用size==0判断,是否为满也可以用size==data.length判断吧?可能是因为我知识还不够深入,老师可以给我讲一讲 浪费的那一个空间的价值 体现在那里吗?
写回答
2回答
-
大赞!你说的对,用size判断可以不浪费这个空间:)
我所讲的需要浪费一个空间,其实完全基于只使用front和tail这两个变量:)这是循环队列的一个经典实现。实际上,整个循环队列,只使用front和tail就够了,size可以通过front和tail推导出来。有兴趣可以试试看?
如果使用size做判断,front,tail和size都需要。因为还是需要使用front和tail来记录入队的位置或者出队的元素:)
不过对于现代计算机,这些对性能的影响近乎为0。所以你使用size判断非常非常没问题!我局限在过去自己学习的经典实现的框框里啦!
再次赞一下你的问题!
362020-11-26 -
慕虎3444883
提问者
2018-07-24
刚才测试循环队列和数组队列的出队耗时,100万个整数,数组队列花了6分多钟,循环队列只花了零点零几秒,差距好大呀。我第一次测试的时候出了问题。当时采用了问题中所说的用size是否为零来定义isEmpty方法,结果抛出了循环队列为空的异常...该为老师讲的front==tail就成功了。。可size不就是表示队列中有的的元素个数嘛,怎么回事儿啊?
312018-07-25
相似问题