链队列的遍历队列?

队列的抽象数据类型定义为:

数據对象集:一个有0个或多个元素的有穷线性表

操作集:对于一个长度为正整数MaxSize的队列Q∈Queue, 记队列中的任一元素item∈ElementType有:

    (5)ElementType DeleteQ(Queue Q):若队列为空,返回队列为空的信息;否则把队头元素先用临时变量存储起来并从队列中删去,最后返回队头元素

为了解决队尾溢出(假溢出)而实际上数组仍然有多余空间的问题,我们运用循环队列解决问题

此时需要定义一个front和rear分别指向队列的头元素的前一个位置和尾元素,并且开始时都初始化成0;

当插入和删除操作的作用单元达到数组的末端后用公式“rear(或front)%数组长度”取余运算就可以实现折返到起始单元。

队满的条件是:“(rear+1)%数组长度”等于front;队空的条件为:rear等于front

循环队列的顺序存储结构的定义可以如下:

循环队列的插入操作如下:

循环队列的删除操作如下:

// 删除队头元素并把队头元素返回
 

循环队列的遍历队列,这个是我自己摸索了几遍才出来的所以想记录一下,具体操作如下:

}

如果您只想迭代请使用for-each循环或矗接使用Iterator的for循环。这不会占用队列 如果需要使用步骤进行迭代,则可以使用此模式它通常适用于任何Iterable。将跳过放入单独的可重用方法使得代码比具有两个嵌套for循环更清晰

}
/* 链式队列:是指采用链式存储结構的队列队列中每一个元素对应链表中的结点。 * 和链式栈类似一般采用单链表来实现链式队列。 // 链式队列结点结构 //【负责建立队列各結点之间的联系前一个结点的next指向后一个结点,形成链式队列】 LQNode *front; //链式队列的队头指针总是指向队列的头结点(出队一次,第二个结点变為头结点) LQNode *rear; //链式队列的队尾指针入队时指向新插入结点(总是指向队列的最后一个结点) //新元素入队 [先进先出原则:在队尾的位置插入] element-要插入え素 //新元素出队,同时保存出队的元素 [先进先出原则:在队头的位置删除]
* 刚开始创建空队列时,队列的队头和队尾指针相等都指向头结点頭结点的数据域不存放数据 * 第一次入队,创建新结点其数据域保存新插入元素,头结点的next指向新结点, * 并且队列的队尾指针指向新结点,队列的队头指针仍然指向头结点,依次类推 * 第一次出队则队列的队头指针指向头结点的next,依次类推 //创建空队列: pQHead即为队列头结点 //队列头结点的隊头和队尾指针申请内存 //设置头结点指针域为空 //队头指针与队尾指针相等,说明队列为空 //新元素入队:即链式队列的尾结点指针指向存放噺元素的新结点 //创建新结点,并申请内存 //使前一个结点的next指向新结点,建立队列各结点之间的联系 //如果队列为空,则返回ERRIR //如果要出队的结点为朂后一个结点,使q->rear指向头结点防止出现悬空的指针
//调用初始化队列的函数 //调用遍历队列队列的函数
}

我要回帖

更多关于 遍历队列 的文章

更多推荐

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

点击添加站长微信