这本来是上一篇博客里的内容,但不知道什么原因breakdown了……我就简单放上一道题好了

题意:这道题的题目是“猜猜数据结构”,题意就是给你一些输入输出数据,让你根据这些数据判断是什么数据结构。要猜的数据结构只有三种,栈(stack)、队列(queue)、优先队列(priority_queue)。输出有5种情况,前三种分别是确定了一种数据结构,第四种是三种数据结构都不符合,第五种是有2种或2种以上符合。

#include <bits/stdc++.h>
using namespace std;
int n;
int main()
{
int a,b;
while (scanf("%d",&n)!=EOF)
{
stack<int>s;
queue<int>q;
priority_queue<int,vector<int>,less<int> >p;
int f[];
for(int i=;i<;i++) f[i]=;
for(int i=;i<=n;i++)
{
scanf("%d %d",&a,&b);
if(a==) ///分别进入三种数据结构
{
s.push(b);
q.push(b);
p.push(b);
}
else
{
if(!s.empty())
{
if(s.top()!=b)///进栈
{
f[]=;
}
s.pop();
}
else
f[]=;
if(!q.empty())///进队
{
if(q.front()!=b)
{
f[]=;
}
q.pop();
}
else
f[]=; if(!p.empty()) ///进优先队列
{
if(p.top()!=b)
{
f[]=;
}
p.pop(); }
else
f[]=; } }
int cnt=;
for(int j=;j<;j++)
{
if(f[j]==)
cnt+=;
}
if(cnt==)
cout<<"impossible\n";
else if(cnt>)
cout<<"not sure\n";
else
{
if(f[])
cout<<"stack\n";
if(f[])
cout<<"queue\n";
if(f[])
cout<<"priority queue\n";
} }
}

关于栈、队列、优先队列的应用——UVa11995的更多相关文章

  1. Java栈,队列,优先队列的使用

    1. 栈的使用: import java.util.*; public class Main{ public static void main(String[] args){ Deque<Str ...

  2. 【STL】栈+队列+优先队列(详)+ 拯救行动题解

    一.栈 栈(stack)又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它是把新元 ...

  3. java 集合 Connection 栈 队列 及一些常用

    集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实 ...

  4. Java 容器之 Connection栈队列及一些常用

    集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实 ...

  5. java面向对象的栈 队列 优先级队列的比较

    栈 队列 有序队列数据结构的生命周期比那些数据库类型的结构(比如链表,树)要短得多.在程序操作执行期间他们才被创建,通常用他们去执行某项特殊的任务:当完成任务之后,他们就会被销毁.这三个数据结构还有一 ...

  6. 队列&优先队列

    1.队列 普通的队列都是先进先出,元素从队尾添加,从队头删除. function queue(){ var arr=[]; this.enqueue=function(item){ arr.push( ...

  7. C++实现一个简单的双栈队列

    双栈队列的原理是用两个栈结构模拟一个队列, 一个栈A模拟队尾, 入队的元素全部压入此栈, 另一个栈B模拟队首, 出队时将栈A的元素弹入栈B, 将栈B的栈顶元素弹出 此结构类似汉诺塔, 非常经典, 这里 ...

  8. 栈&队列&并查集&哈希表(julyedu网课整理)

    date: 2018-11-25 08:31:30 updated: 2018-11-25 08:31:30 栈&队列&并查集&哈希表(julyedu网课整理) 栈和队列 1. ...

  9. Leetcode栈&队列

    Leetcode栈&队列 232.用栈实现队列 题干: 思路: 栈是FILO,队列是FIFO,所以如果要用栈实现队列,目的就是要栈实现一个FIFO的特性. 具体实现方法可以理解为,准备两个栈, ...

随机推荐

  1. python日常小计

    1.查看变量类型:  pring type(item) 2.解决list中的中文显示乱码 使用decode('string_escap')将数据库查询返回的将带转义的字节码字符串转换为成utf-8中文

  2. Angular/cli 安装(windows环境)。

    1.卸载先前安装的Angular/cli npm uninstall -g angular-clinpm uninstall --save-dev angular-clinpm uninstall - ...

  3. http error: "request body stream exhausted"

    'request body stream exhausted' after authentication challenge #661  Closed aburgel opened this issu ...

  4. 【JMeter】生成报告-Dashboard Report

    Dashboard Report 用于生成HTML页面格式图形化报告 1.在JMmeter性能测试结束时,自动生成本次测试的HTML图形化报告 2.使用一个已有的结果文件(如CSV)来生成该次的HTM ...

  5. Windows下Redis安装过程

    1.去github下载Redis-x64-2.8.2402.zip压缩包 2.将压缩包解压到你要安装的目录下 3.将redis设置为开机自启动服务 redis-server --service-ins ...

  6. git pull时报错:refusing to merge unrelated histories

    在Github新建一个仓库,写了README文件,然后把本地一个写了仓库上传,首先pull,因为两个仓库不同,发现refusing to merge unrelated histories,无法pul ...

  7. s21day15 python笔记

    s21day15 python笔记 一.内容回顾及补充 回顾 补充 range / xrange(python2与python3的区别六) python2: xrange:不会在内存中立即创建,而是在 ...

  8. 安装了低版本Jdk后eclipse无法打开的终极解决方法

    环境jdk1.7.0_17,eclipse oxygen(2017年6月发布) 因为之前安装的是jdk1.8.0_144,所以eclipse的相关配置都修改成了jdk1.8的版本,然而,近期因为某些原 ...

  9. 搭建开发环境3) Debian8 安装Netbeans

    1.下载最新版的Netbeans.sh(netbeans-8.2-linux.sh) 2.进入管理员账户,移动到下载的目录 ./netbeans-8.2-linux.sh //执行安装脚本 出现界面安 ...

  10. 安装Scala开发环境

    Scala 介绍 Step 1: 安装 Java开发环境 Scala 版本与Java版本的兼容关系 从Oracle网站下载JDK URL: http://www.oracle.com/technetw ...