循环队列的具体实现因人而异,主要区别是队列的初始化,以及队列的结构中有没有Q_Size这个域,对于没有Q_Size域的结构,需要根据front和rear之间的差值来判断队空或者队满,并且只有队列中少用一个元素,才可以区分出队空和队满两种状态。如果将front和rear初始化为均为0,那么判断队空的条件是rear - front = 0,判断队满的条件是(rear +1)%MAX_SIZE - front = 0;而在Weiss书中,作者将front初始化为1,将rear初始化为0,此时判断对空的条件是rear - front = -1,判断队满的条件是(rear +1)%MAX_SIZE - front = -1。而如果队列的结构中含有Q_Size这个用来指示当前队列大小的域,那么就不用少用队列中的一个元素了,只要根据Q_Size是等于0还是MAX_Size即可区分出队列是空还是满。