博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
题目1083: 堆栈的使用 吉林大学上机题
阅读量:4105 次
发布时间:2019-05-25

本文共 1427 字,大约阅读时间需要 4 分钟。

题目描述

堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。Push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。

 

输入

对于每组测试数据,第一行是一个正整数 n,0<n<=10000(n=0 结束)。而后的 n 行,每行的第一个字符可能是'P’或者'O’或者'A’;如果是'P’,后面还会跟着一个整数,表示把这个数据压入堆栈;如果是'O’,表示将栈顶的值 pop 出来,如果堆栈中没有元素时,忽略本次操作;如果是'A’,表示询问当前栈顶的值,如果当时栈为空,则输出'E'。堆栈开始为空。

 

输出

 对于每组测试数据,根据其中的命令字符来处理堆栈;并对所有的'A’操作,输出当时栈顶的值,每个占据一行,如果当时栈为空,则输出'E’。当每组测试数据完成后,输出一个空行。

 

样例输入
5 P 75 O O P 60 A 7 A O P 73 P 49 A O P 3 0
 

样例输出
60 E 49
 

提示 [+]

*** 提示已隐藏,点击上方 [+] 可显示 ***

 

来源

 
注意:

每行的第一个字符可能是'P’或者'O’或者'A’之后可能有多余空格,用getchar()可能会出错。

/*********************************  *    日期:2013-3-11 *    作者:SJF0115  *    题号: 天勤OJ 题目1083: 堆栈的使用 *    来源:http://acmclub.com/problem.php?id=1083 *    结果:AC  *    来源:2011年吉林大学计算机研究生机试真题 *    总结: **********************************/ #include
#include
#include
#include
using namespace std;int main(){ int N,i,num; char op[5]; while(scanf("%d",&N) != EOF && N != 0){ getchar(); stack
Stack; for(i = 0;i < N;i++){ scanf("%s",&op); //如果是'P’,后面还会跟着一个整数,表示把这个数据压入堆栈; if(op[0] == 'P'){ scanf("%d",&num); Stack.push(num); } //如果是'O’,表示将栈顶的值 pop 出来,如果堆栈中没有元素时,忽略本次操作; else if(op[0] == 'O'){ if(!Stack.empty()){ Stack.pop(); } } //如果是'A',表示询问当前栈顶的值,如果当时栈为空,则输出'E'。 else if(op[0] == 'A'){ if(Stack.empty()){ printf("E\n"); } else{ printf("%d\n",Stack.top()); } } }//for printf("\n"); }//while return 0;}

转载地址:http://ezcsi.baihongyu.com/

你可能感兴趣的文章
servlet中的cookie和session
查看>>
过滤器及JSP九大隐式对象
查看>>
软件(项目)的分层
查看>>
菜单树
查看>>
MySQL-分布式架构-MyCAT
查看>>
设计模式六大原则(6):开闭原则
查看>>
阿里面试总结--JAVA
查看>>
Servlet的生命周期
查看>>
JAVA八大经典书籍,你看过几本?
查看>>
《读书笔记》—–书单推荐
查看>>
【设计模式】—-(2)工厂方法模式(创建型)
查看>>
有return的情况下try catch finally的执行顺序(最有说服力的总结)
查看>>
String s1 = new String("abc"); String s2 = ("abc");
查看>>
JAVA数据类型
查看>>
Xshell 4 入门
查看>>
SoapUI-入门
查看>>
Oracle -常用命令
查看>>
JAVA技术简称
查看>>
ORACLE模糊查询优化浅谈
查看>>
2016——个人年度总结
查看>>