队列——queue的用法(及洛谷B3616)

[复制链接]
发表于 2023-2-21 22:29:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
队列的概念
  在说队列之前,先回忆一下栈是什么,我们一般说栈是一个先进后出的数据结构,而队列就是先进先出的数据结构。
  队列是定在表的一端进行插入,表的另一端进行删除。
  通常,我们称进数据的一端为队尾,出数据的一端为队首(这边需要注意,经常会记反起码我是这样的),数据元素进队列的过程称为入队,出队列的过程称为出队。
  队列存储的方式主要分为两种:
    1.顺序队列(集中存储)      2.链队列(分散存储)
  两者的区别主要就是顺序表和链表的区别。
队列的用法
  和栈一样,队列同样可以使用STL来操作。
  队列的头文件是:
  1. 1 #include<queue> //当然万能头中也包括此头文件
复制代码
  有以下几种操作方式:
  1. 1 queue<int> q; //建立一个队列q
  2. 2 q.push(a); //将元素a插入到队列q的末尾
  3. 3 q.pop(); //删除q的队首元素
  4. 4 q.front(); //查询q的队首元素(这里要注意它和栈略有不同,栈中用的是top函数)
  5. 5 q.back(); //查询q的队尾元素
  6. 6 q.size(); //查询q的元素个数
  7. 7 q.empty(); //查询q是否为空
复制代码
  一定要注意在队列中查询队首元素是front不是top,不然就会被无情报错 本蒟蒻第一次打队列时记错了,结果……
队列的模板
  题目
      题目描述
      请你实现一个队列(queue),支持如下操作:
      push(x):向队列中加入一个数 x。
      pop():将队首弹出。如果此时队列为空,则不进行弹出操作,并输出 “ERR_CANNOT_POP”。
      query():输出队首元素。如果此时队首为空,则输出“ERR_CANNOT_QUERY”。
      size():输出此时队列内元素个数。
      输入格式
      第一行,一个整数n,表示操作的次数。  
      接下来n行,每行表示一个操作。格式如下:
      “1 x”,表示将元素 `x` 加入队列。
      “2”,表示将队首弹出队列。
      ”3”,表示查询队首。
      “4”,表示查询队列内元素个数。
      输出格式
      输出若干行,对于每个操作,按「题目描述」输出结果。
      每条输出之间应当用空行隔开。
      输入样例                                               输出样例
  1.       13                                 2
  2.       1 2                                1
  3.       3                                  2
  4.       4                                  233
  5.       1 233                              0
  6.       3                                  ERR_CANNOT_POP
  7.       2                                  ERR_CANNOT_QUERY
  8.       3                                  144
  9.       2
  10.       4
  11.       3
  12.       2
  13.       1 144
  14.       3<br>
复制代码
[code] 1 #include //万能头文件,包含了 2 #define MAXN 100010 3 #define ll long long 4 using namespace std; 5 int n;  6 queue s; 7 int main() 8 { 9     cin>>n;10     for(int i=1;i>a;14         if(a==1)15         {16             int x;17             cin>>x;18             s.push(x);19         }20         if(a==2)21         {22             if(s.empty())23                 cout
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表