已知循环队列存储在一维数组A[0..n-1]中,且队列非空时 front 和 rear 分别指向队头和队尾元素。若初始时队列为空,且要求第 1 个进入队列的元素存储在 A[0]处,则初始时 front和 rear 的值分别是( )。
本题,我们从一般情况分析:
当进元素时,rear将后移,以便指向新的队尾元素。出队时,front后移,更新指向新的队头。
那么我们想,只有最初只有一个元素时:
反推,front不用动,但是rear要退一个位置,往哪退?按照循环,第一个元素位置可以直接到最后一个位置上,因此,如图所示。所以在数组中初态就是0,n-1.
有一个问题,为什么front初态不是在最后一个位置呢?因为为了操作的统一性,进队时,并不更新front,所以front初态在第一个元素的位置,即下标为0处。
本题,我们从一般情况分析:
当进元素时,rear将后移,以便指向新的队尾元素。出队时,front后移,更新指向新的队头。
那么我们想,只有最初只有一个元素时:
反推,front不用动,但是rear要退一个位置,往哪退?按照循环,第一个元素位置可以直接到最后一个位置上,因此,如图所示。所以在数组中初态就是0,n-1.
有一个问题,为什么front初态不是在最后一个位置呢?因为为了操作的统一性,进队时,并不更新front,所以front初态在第一个元素的位置,即下标为0处。