九度1108
2014-05-06 10:39
225 查看
题目描述:
堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。Push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。
输入:
对于每组测试数据,第一行是一个正整数 n,0<n<=10000(n=0 结束)。而后的 n 行,每行的第一个字符可能是'P’或者'O’或者'A’;如果是'P’,后面还会跟着一个整数,表示把这个数据压入堆栈;如果是'O’,表示将栈顶的值 pop 出来,如果堆栈中没有元素时,忽略本次操作;如果是'A’,表示询问当前栈顶的值,如果当时栈为空,则输出'E'。堆栈开始为空。
输出:
对于每组测试数据,根据其中的命令字符来处理堆栈;并对所有的'A’操作,输出当时栈顶的值,每个占据一行,如果当时栈为空,则输出'E’。当每组测试数据完成后,输出一个空行。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
感觉很恶心的一道题,模拟堆栈是比较简单的,但是此题在输入上刁难,所以要注意输入时的选择;在P后面不知道会有多少空格,如果用gets直接把一行输入,取第二个数为压入堆栈数据是不对的!(要注意gets,scanf,getchar等的选用)
堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。Push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。
输入:
对于每组测试数据,第一行是一个正整数 n,0<n<=10000(n=0 结束)。而后的 n 行,每行的第一个字符可能是'P’或者'O’或者'A’;如果是'P’,后面还会跟着一个整数,表示把这个数据压入堆栈;如果是'O’,表示将栈顶的值 pop 出来,如果堆栈中没有元素时,忽略本次操作;如果是'A’,表示询问当前栈顶的值,如果当时栈为空,则输出'E'。堆栈开始为空。
输出:
对于每组测试数据,根据其中的命令字符来处理堆栈;并对所有的'A’操作,输出当时栈顶的值,每个占据一行,如果当时栈为空,则输出'E’。当每组测试数据完成后,输出一个空行。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
感觉很恶心的一道题,模拟堆栈是比较简单的,但是此题在输入上刁难,所以要注意输入时的选择;在P后面不知道会有多少空格,如果用gets直接把一行输入,取第二个数为压入堆栈数据是不对的!(要注意gets,scanf,getchar等的选用)
#include<stdio.h> #define SIZE 10001 using namespace std; int sta[SIZE]; int main() { int n; char buf[5]; int len; char tmp; int num; while(scanf("%d",&n)!=EOF) { if(n==0) break; len=0; tmp=getchar(); while(n--) { scanf("%s",&buf); if(buf[0]=='P') { scanf("%d",&num); sta[len++]=num; } else if(buf[0]=='O') { if(len) len--; } else if(buf[0]=='A') { if(len) printf("%d\n",sta[len-1]); else printf("E\n"); } } printf("\n"); } return 0; }
相关文章推荐
- 堆栈 九度1108 1101
- 九度oj 题目1108:堆栈的使用
- 九度OnlineJudge-堆栈的的使用(1108)
- 九度oj 1108
- 九度题目1108:堆栈的使用
- 九度oj-1108-堆栈的使用
- 九度OJ 1108:堆栈的使用 (堆栈)
- 九度OJ 1108:堆栈的使用 (堆栈)
- 九度OJ 1108 堆栈的使用
- 【九度OJ】题目1108:堆栈的使用 解题报告
- 九度OJ 1108 堆栈的使用
- 九度 1108
- 九度OJ 1108 堆栈的使用
- 九度 Online Judge 算法 刷题 题目1160:放苹果
- 九度OJ 题目1069:查找学生信息
- 九度oj 1106
- 九度 1105 - 字符串处理 - 字符串的反码
- 九度oj 1152
- 九度oj 1179
- 九度OJ 题目1119:Integer Inquiry