当前位置: 首页 > article >正文

Openjudge 栈的基本操作

总时间限制: 

1000ms

内存限制: 

1000kB

描述

栈是一种重要的数据结构,它具有push k和pop操作。push k是将数字k加入到栈中,pop则是从栈中取一个数出来。

栈是后进先出的:把栈也看成横向的一个通道,则push k是将k放到栈的最右边,而pop也是从栈的最右边取出一个数。

假设栈当前从左至右含有1和2两个数,则执行push 5和pop操作示例图如下:

          push 5          pop

栈   1 2  ------->  1 2 5 ------>  1 2

现在,假设栈是空的。给定一系列push k和pop操作之后,输出栈中存储的数字。若栈已经空了,仍然接收到pop操作,

则输出error。

输入

第一行为m,表示有m组测试输入,m<100。
每组第一行为n,表示下列有n行push k或pop操作。(n<150)
接下来n行,每行是push k或者pop,其中k是一个整数。
(输入保证同时在栈中的数不会超过100个)

输出

对每组测试数据输出一行。该行内容在正常情况下,是栈中从左到右存储的数字,数字直接以一个空格分隔,如果栈空,则不作输出;但若操作过程中出现栈已空仍然收到pop,则输出error。

样例输入

2
4
push 1
push 3
pop
push 5
1
pop

样例输出

1 5
error
#include<iostream>
#include<stack>
using namespace std;
void work()
{stack<int>st;int T, M;string s;bool flag = 1;cin >> T;while (T--){cin >> s;if (s == "push"){cin >> M;st.push(M);}else{if (!st.empty()){st.pop();}else{flag = 0;}}}if (flag){stack<int>reSt;while (!st.empty()){reSt.push(st.top());st.pop();}while (!reSt.empty()){cout << reSt.top() << " ";reSt.pop();}}else{cout << "error";}cout << endl;
}
int main()
{int T;cin >> T;while (T--){work();}return 0;
}

http://www.lryc.cn/news/2414481.html

相关文章:

  • 【建议收藏】7 个“最佳”AI 视频生成器
  • innerHTML的作用及用法。
  • JS中的Date类
  • 从头开始认识jboss
  • 什么是ANR,如何避免ANR
  • 【文心快码】Comate安装与使用体验分享
  • zookeeper实战全面讲解(一)
  • 6、ExtJs——Ext基础架构--认识Ext.js和Ext-more.js
  • Java高级编程——多线程
  • MySQL产品(DBMS)学习总结
  • 使用Python抓取并渲染包含JavaScript的网页(PhantomJS)
  • JAVA高频216道面试题+答案!!面试必备
  • 顶刊复现:机器学习解释利器—SHAP实战【免费获取】
  • 【Windows】Windows11查看文件的md5值
  • js 文件下载的代码
  • Mybatis源码解析--Mapper代理对象
  • 【D触发器】从底层重新认识 D 触发器、建立时间和保持时间
  • apple iMac一体机 装双系统 实战! (Apple +Win 7 64bit)Good
  • EJB3.0介绍
  • axure注册码
  • matlab2015的marker,matlab中markersize什么意思
  • SQL sever 笔记
  • surfacecreated啥时被调用_JavaScript当中的this究竟是个啥?
  • 第一节:1. 美国域名中心US Domain Center是什么,为什么选择它作为建站平台
  • 城市筛选检索
  • MySQL修改表(ALTER TABLE语句)
  • ORA-01008: 并非所有变量都已关联
  • 设计超炫的3D窗体旋转特效(windows7中所没有的特性)
  • 分享到QQ、QZone方法,无需登录
  • VMware Workstation 虚拟机 安装CentOS 8