华为路由器tc系列5200

今天看图的广度优先遍历的时候发现用到了队列,补一下循环队列的知识参考《大话数据结构》的P116~117,自己写了一个简单的测试例子便于理解

首先需要理解以下三条公式。

front是队头元素的下标rear是队尾元素后一位的下标。(书上用头指针和尾指针front和rear并不是指针,个人觉得不太好)

注意:如果队列不保留任何元素空间

满足front==rear的情况下可能是队列空,也可能是队列满所以为了方便,本文讨论的是采用保留一个元素空间的方法(也可以采用设置标志变量的方法)

队列满只有这两种情况,所以队列满的条件是:

同时考虑这两种情况队列计算公式是:

MAXSIZE是队列长度(包括那個保留的元素空间)

下面举个简单的例子,实现循环队列的创建入队和出队操作。

代码和解释如下(VS2012测试通过):

7 //循环队列的顺序存储結构 11 //保留一个元素空间否则front==rear,是空队列还是满队列不容易判断 16 //循环队列的初始化返回指向循环队列的地址 25 //求循环队列的长度,返回循環队列的当前长度 31 //循环队列的入队列操作 45 //循环队列的出队列操作 64 //初始化一个空队列s 67 //插入元素并返回当前队列长度 91 //再插入元素,理解队列嘚循环

设循环队列的容量为50(序号从0到49)现经过一系列的入队和出队运算后,有 front=16rear=5(rear指向队尾元素的后一位置),当前循环队列中元素个数为( )

求循环队列中的元素个数的公式为:(rear-front+size)%sizesize是循环队列的容量 所以,答案选B

我要回帖

更多关于 华为路由器tc系列 的文章

 

随机推荐