书上说尾指针始终指向队列指针输出全部元素尾元素的下一个位置,但是这个图中却说Q.rear的值是5,这是为什么呢?

在引用循环队列指针输出全部元素前我们需要了解队列指针输出全部元素是如何线性实现的。 

简单地讲便是当队列指针输出全部元素为空时,front = rear = 0,每当插入元素尾指针+1刪除元素是头指针-1。但是我们会发现一个问题,如上面的第四个图0,12三个空间并没有使用。因此为了占用该空间,我们使用了循環队列指针输出全部元素来实现 循环队列指针输出全部元素原理图:  

我们可以发现,当循环队列指针输出全部元素属于上图的d1情况时昰无法判断当前状态是队空还是队满。为了达到判断队列指针输出全部元素状态的目的可以通过牺牲一个存储空间来实现。 如上图d2所示 队头指针在队尾指针的下一位置时,队满 Q.front == (Q.rear + 1) % MAXSIZE 因为队头指针可能又重新从0位置开始,而此时队尾指针是MAXSIZE - 1所以需要求余。 当队头和队尾指針在同一位置时队空。 Q.front == Q.rear;

}

云栖社区()为您免费提供

相关的问答和话题云栖社区以分享专业、优质、高效的技术为己任,帮助技术人快速成长与发展!

}

队头指针指向队头元素的前一个位置需要额外占用一个位置,所以最多存储m-1个元素(需要与用数组   Q   (其下标在   0…n-1   rear   为队尾元素的位置,假设队列指针输出全部元素中的え素个数总小于   n   则求队列指针输出全部元素中元素个数的公式是 进行区分)注意最多存储的元素个数和实际存储的元素个数两种区别

}

我要回帖

更多关于 队列指针输出全部元素 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信