hp>首先,是的,size == 0 和 front == tail 二者表达的是一个意思。表达一个意思是指:在 size == 0 的时候,一定有 front == tail,同时,front == tail 的时候,一定有 size == 0。也正因为如此,在有 size 的时候,可以不浪费这一个空间,如果浪费这一个空间,我们在类中可以不设置 size 这个变量。这一点,在这一章后续,我留了一个作业,有兴趣可以先看一下。
作业视频:https://class.imooc.com/lesson/1579#mid=36123
关于不浪费一个空间的循环队列:https://class.imooc.com/lesson/1579#mid=36124
关于不设置 size 的循环队列:https://class.imooc.com/lesson/1579#mid=36125
但是,在整个逻辑过程中,这三个变量的语义是一直保持着的。即:size 表示队列中有多少元素。front 表示堆首元素的位置,tail 表示最后一个元素的后一个位置。(基于数组长度取模)如果 front == tail,说明队列的第一个元素的位置和队列最后一个元素的下一个位置在一起,这是不可能的,说明整个队列是空的。
我不确定你截图中的错误是怎样出现的,但是课程的官方代码应该不会出错误。请使用课程官方代码实验你正在试验的测试用例。课程官方代码传送门:https://git.imooc.com/class-105/Play-Algorithms-and-Data-Structures?utm_source=material
如果使用课程官方代码也有这个错误,请告诉我你的具体测试用例是什么。
继续加油!:)