STL之队列queue(C++)

本文详细介绍了C++ STL中的队列(queue)数据结构,包括其定义、两种存储表示(链队列和循环队列)及主要成员函数。此外,还通过UVa540题目分析展示了队列在解决实际问题中的应用,强调了队列高效实现的重要性。
摘要由CSDN通过智能技术生成

1、队列(queue)的定义

队列(queue)是一种先进先出( FIFO) 的线性表。它只允许在表尾进行插入,而在队头删除元素。
运用 queue, 必须声明请头文件:#include <queue>
queue 声明:如声明一个元素类型为整型的 queue:queue<int> st;
在这里插入图片描述

2、队列(queue)的两种存储表示

(1)链队列——队列的链式表示

链队列需要头指针和尾指针才能唯一确定。空链队列的判决条件:头指针和尾指针均指向头结点,如3-11(a)所示。
注意:在删除操作中,当队列的最后一个元素被删后,队列尾指针也丢失了,因此需对尾指针重新赋值。
在这里插入图片描述

(2)循环队列——队列的顺序表示

对于顺序栈,初始化建空队列时,令 front = rear = 0,每当插入新的队列尾元素时,“尾指针增1”;每当删除队列头元素时,“头指针增1”。当队列非空时,头指针时钟指向队列头元素,尾指针始终指向队列尾元素的下一个位置。
队列元素个数:( Q.rear - Q.front + MAXQSIZE ) % MAXQSIZE。
队列满的条件:( Q.rear + 1 ) % MAXQSIZE == Q.front。

在这里插入图片描述

3、队列(queue)的主要成员函数

(1)队列主要的四个成员函数

que.push() // 将一个元素置入queue 内。
que.front() //返回queue内的 “下一个” 元素,即队头元素。
que.back() //返回queue的最后一个元素
que.pop() //从queue中移除一个元素

(2)注意

如果queue 内没有元素,则执行 front() 和 pop() 会导致未定义的行为。所以,在使用前可以先用成员函数 size() 或 empty() 来检验容器是否为空。

(3)用法示例

#include <iostream>
#include <queue>

using namespace std;

int main(){
   
	queue<int> que;
	
	for(int i=0; i<10; i++){
   
		que.push(i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值