何谓队列的“假溢出”现象?如何解决?

何谓队列的“假溢出”现象?如何解决?,第1张

先进先出在队列的顺序存储结构中,设头指针为front,队尾指针为rear,卖态没队的容量(存储空间的大小)为m。当有元素加入到队列时,若rear=m(初始时rear=0),则发生队列的上溢出现象,该元素不能加入到队列中。这里需要特别注意的是队列的假溢出中纳现象,队列中还有空余的空间,但闭和元素不能进队列。造成这种现象的原因是由于队列的 *** 作方式所致。 解决队列上溢的方法有以下几种:

(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)线性表。

参考资料来源:百度百科-队列


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8265806.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存