顺序队列需要预先定义队列的容量,一般将数组的首尾相接、形成循环队列,这样可以解决“( )”问题。

顺序队列需要预先定义队列的容量,一般将数组的首尾相接、形成循环队列,这样可以解决“( )”问题。


【正确答案】:假溢出
【题目解析】:

若一个数组的最大下标为5,一个元素已占用了该单元,如果还有元素要入队列,则SQ.rear=SQ.rear+1,SQ.rear将超出数组的下标范围,从而使将要入队的新元素无法进入队列,若此时,数组中下标低端还有空位置,即数组的实际空间并没有占满,这种现象称为“假溢出”。

若要插入新元素,应将队列中现有元素向队首方向移动,以便在队尾腾出空间。为了避免元素的移动,可以将存储队列元素的一维数组首尾相接,形成一个环状,这样的队列称为循环队列。当SQ.rear=maxsize-1时,只要数组的低下标端有空闲空间,仍可进行入队列运算。此时只需令SQ.rear=0,即把SQ.data[0]作为新的队列尾,并将入队的元素置入此单元中。这样就解决了“假溢出”问题。


Top