蓝桥杯算法提高——队列操作(STL)

问题描述
  队列操作题。根据输入的操作命令,操作队列(1)入队、(2)出队并输出、(3)计算队中元素个数并输出。
输入格式
  第一行一个数字N。
  下面N行,每行第一个数字为操作命令(1)入队、(2)出队并输出、(3)计算队中元素个数并输出。
输出格式
  若干行每行显示一个2或3命令的输出结果。注意:2.出队命令可能会出现空队出队(下溢),请输出“no”,并退出。
样例输入
7
1 19
1 56
2
3
2
3
2
样例输出
19
1
56
0
no
数据规模和约定
  1<=N<=50

一开始以为只是个简单的stl,结果有两组数据过不去,确认了好几遍题意,在输出no后加了return 0就过了。。。

#include <iostream>
#include <cstring>
#include <string>
#include <vector>
#include <queue>
#include <cstdio>
#include <set>
#include <math.h>
#include <algorithm>
#include <queue>
#include <iomanip>
#define INF 0x3f3f3f3f
#define MAXN 10005
#define Mod 123456789
using namespace std;
int main()
{
    int n;
    scanf("%d",&n);
    int op;
    queue<int> q;
    while(n--)
    {
        scanf("%d",&op);
        if(op==1)
        {
            int x;
            scanf("%d",&x);
            q.push(x);
        }
        else if(op==2)
        {
            if(!q.empty())
            {
                printf("%d\n",q.front());
                q.pop();
            }
            else
            {
                printf("no\n");
                return 0;
            }
        }
        else if(op==3)
            printf("%d\n",q.size());
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第0章 Java程序设计基础 1 【习0.1】 实验0.1 哥德巴赫猜想。 1 【习0.2】 实验0.2 杨辉三角形。 1 【习0.3】 实验0.3 金额的中文大写形式。 1 【习0.4】 实验0.4 下标和相等的数字方阵。 1 【习0.5】 实验0.5 找出一个二维数组的鞍点 2 【习0.6】 实验0.6 复数类。 2 【习0.7】 实验0.8 图形接口与实现图形接口的类 2 第1章 绪论 3 【习1.1】 实验1.1 判断数组元素是否已按升序排序。 3 【习1.2】 实验1.3 用递归算法求两个整数的最大公因数。 3 第2章 线性表 5 【习2.1】 习2-5 图2.19的数据结构声明。 5 【习2.2】 习2-6 如果在遍历单链表时,将p=p.next语句写成p.next=p,结果会怎样? 5 【习2.3】 实验2.2 由指定数组中的多个对象构造单链表。 5 【习2.4】 实验2.2 单链表的查找、包含、删除操作详见8.2.1。 5 【习2.5】 实验2.2 单链表的替换操作。 6 【习2.6】 实验2.2 首尾相接地连接两条单链表。 6 【习2.7】 实验2.2 复制单链表。 6 【习2.8】 实验2.2 单链表构造、复制、比较等操作的递归方法。 7 【习2.9】 建立按升序排序的单链表(不带头结点)。 8 【习2.10】 实验2.6 带头结点的循环双链表类,实现线性表接口。 10 【习2.11】 实验2.5 建立按升序排序的循环双链表。 14 第3章 栈和队列 17 【习3.1】 习3-5 栈和队列有何异同? 17 【习3.2】 能否将栈声明为继承线性表,入栈方法是add(0,e),出栈方法是remove(0)?为什么? 17 【习3.3】 能否用一个线性表作为栈的成员变量,入栈方法是add(0,e),出栈方法是remove(0)?为什么? 17 【习3.4】 能否将队列声明为继承线性表,入队方法是add(e),出队方法是remove(0)?为什么? 17 第4章 串 18 【习4.1】 实验4.6 找出两个字符串中所有共同的字符。 18 【习4.2】 习4-9(1) 已知目标串为"abbaba"、模式串为"aba",画出其KMP算法的匹配过程,并给出比较次数。 18 【习4.3】 习4-9(2) 已知target="ababaab"、pattern="aab",求模式串的next数组,画出其KMP算法的匹配过程,并给出比较次数。 18 第5章 数组和广义表 20 【习5.1】 求一个矩阵的转置矩阵。 20 第6章 树和二叉树 21 【习6.1】 画出3个结点的各种形态的树和二叉树。 21 【习6.2】 找出分别满足下面条件的所有二叉树。 21 【习6.3】 输出叶子结点。 21 【习6.4】 求一棵二叉树的叶子结点个数。 22 【习6.5】 判断两棵二叉树是否相等。 22 【习6.6】 复制一棵二叉树。 23 【习6.7】 二叉树的替换操作。 23 【习6.8】 后根次序遍历中序线索二叉树。 24 第7章 图 25 第8章 查找 26 【习8.1】 实验8.1 顺序表的查找、删除、替换、比较操作。 26 【习8.2】 实验8.2 单链表的全部替换操作。 28 【习8.3】 实验8.2 单链表的全部删除操作。 28 【习8.4】 折半查找的递归算法。 29 【习8.5】 二叉排序树查找的递归算法。 29 【习8.6】 二叉排序树插入结点的非递归算法。 30 【习8.7】 判断一棵二叉树是否为二叉排序树。 31 第9章 排序 32 【习9.1】 判断一个数据序列是否为最小堆序列。 32 【习9.2】 归并两条排序的单链表。 32 【习9.3】 说明二叉排序树与堆的差别。 34
STL队列的基本操作包括: 1. push(x):将元素x放入队尾。 2. pop():将队头元素出队。 3. empty():判断队列是否为空,为空返回true,否则返回false。 4. size():返回队列的长度。 5. front():返回队头元素,不出队。 6. back():返回队尾元素。 具体的代码示例可以参考以下代码: ```cpp #include<bits/stdc++.h> using namespace std; queue<int> q; int p, x, n; int main() { cin >> n; for (int i = 1; i <= n; i++) { cin >> p; switch (p) { case 1: { cout << q.front() << endl; q.pop(); break; } case 2: { cin >> x; q.push(x); cout << "OK" << endl; break; } case 3: { if (q.empty()) cout << "true" << endl; else cout << "false" << endl; break; } case 4: { cout << q.size() << endl; break; } case 5: { cout << q.back() << endl; break; } } } return 0; } ``` 以上是一个使用STL队列的例子,根据输入的命令进行相应的操作,并输出结果。 引用: 目录 队列的定义队列的结构队列的基本操作队列的定义方式和函数调用经典例题 附上代码:(可以试着用数组模拟做一做) push(x) push(x) push(x):将元素x放入队尾。pop() pop() pop():将队头元素出队。empty() empty() empty():判断队列是否为空,为空返回true true true,否则返回false false false。size() size() size():返回队列长度。front() front() front():返回队头元素,不出队。back() back() back():返回队尾元素。队列的定义方式和函数调用std::queue<_Tp> Queue_Name; //_Tp表示定义类型,Queue_Name处是该队列的名称。/*如果前面写了using namespace std或using std::queue,可以不写"std::"*/_Tp x;Queue_Name.push(x);//将元素放入队尾Queue_Name.pop();//弹出队头元素_Tp f=Queue_Name.front();//返回队头元素_Tp b=Queue_Name.back();//返回队尾元素bool Emp=Queue_Name.empty();//判断队列是否为空size_type size=Queue_Name.size();//返回队列的大小//size_type 可以理解为 unsigned int经典例题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值