(1)建立一个足够大的存储空间,但这样做往往造成空间使用效率低。
(2)当出现假溢出时,可采用以下几种方法: ①采用平移元素的方法。每当队列中加入一个元素时,队列中已有的元素向队头移动一
个位置(当然要有空余的空间可移);
②每当删除一个队头元素时,则依次序移动队中的元素,始终使front指针指向队列中
的第一个位置; ③采用循环队列方式。把队列看成一个首尾相邻的循环队列,虽然物理上队尾在队首之
前,但逻辑上队首仍然在前,作插入和删除运算时仍按“”的原则。
顺序队列假溢出就是,随着队头出队慢慢地就会空出一个个存储单元,但是队尾一直再进,最后就是存储空间根本没用满,队列就满了!解决办法,2个,1个是空出1个存储单元出来,另一个是做成循环队列。
当元素被插入到数组中下标最大的位置上之后,队列的空间就用尽了,尽管此时数组的低端还有空闲空间,这种现象叫做假溢出。
将存储队列的数组头尾相接,形成循环队列。队头、队尾指针加1时用语言的取模(余数)运算实现。
队头指针进1: Q.front = (Q.front+1) % MAXQSIZE。
队尾指针进肆旦1: Q.rear = (Q.rear+1) %MAXQSIZE。
扩展资料:
顺序队列通常采用一维数组进行存储。其中,连续的存储单元依次存放队列中的元素。同时,使用两个指针局瞎分别表示数组中存放的第一个元素和最后一个元素的位置。其中,指向第一个元素的指针被称为队头指针front,指向最后一个元素的位置的指针被称为队尾指针rear。
在实际编程过程中,通常设队头指针指向队列的第一个元素,队尾指针桐雹空指向队尾元素的后一个位置。front和rear的初值在队列初始化时均应置为0;入队时将新元素插入rear所指的位置,然后将rear加1。
参考资料来源:百度百科-顺序队列
在顺序队列 *** 作中,假溢出的现象为:当元素被插入到数组中下标最大的位置上之后,队列的空间就空察弯用尽了,尽管此时数组的低端还有空闲空间。
解决:将存储队列的数组头尾相接,形成循环队没和列。队头、队尾指针加1时用语言的取模(余数)运算实现。
队头指针进1: Q.front = (Q.front+1) % MAXQSIZE
队尾指针进1: Q.rear = (Q.rear+1) %MAXQSIZE
扩展资料:
队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故斗闷队列又称为先进先出(FIFO—first in first out)线性表。
参考资料来源:百度百科-队列
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)