发布网友 发布时间:2022-05-01 06:08
共1个回答
热心网友 时间:2022-06-25 09:32
会出现假溢出。因为顺序栈中作为队列用的存储区还没有满,而队列却发生了溢出,这时就会“假溢出”。假溢出的出现情况如下:
1、首先设顺序存储队列用一维数组q(m)表示,其中m为队列中元素个数,队列中元素在向量中的下标从0到m-1;再设队头指针为front,队尾指针是rear,约定front指向队头元素的前一位置,rear指向队尾元素。当front等于-1时,队空。rear等于m-1时,队满。
2、由于队列的性质(“删除”在队头,而“插入”在队尾),所以当队尾指针rear等于m-1时,若front不等于-1,则队列中仍有空闲单元,所以队列并不是真满。这时若再有入队操作,就会造成假溢出。
假溢出的解决办法
1、可以将队列元素向前平移。
2、将队列看成首尾相连,即循环队列(0至m-1)。
3、判断队满的方法:在循环队列下,仍定义front=rear时为队空时,用“牺牲一个单元”方法,即rear+1=front时为队满。二是“设标记”方法,如设标记tag。当tag等于0情况下,若删除时导致front=rear为队空。tag等于1情况下,若因插入导致front=rear则为队满。
以上内容参考 百度百科-假溢出