九度OJ 1108:堆栈的使用 (堆栈)
2024-09-30 01:36:55
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:6705
解决:1974
- 题目描述:
-
堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。Push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。
- 输入:
-
对于每组测试数据,第一行是一个正整数 n,0<n<=10000(n=0 结束)。而后的 n 行,每行的第一个字符可能是'P’或者'O’或者'A’;如果是'P’,后面还会跟着一个整数,表示把这个数据压入堆栈;如果是'O’,表示将栈顶的值 pop 出来,如果堆栈中没有元素时,忽略本次操作;如果是'A’,表示询问当前栈顶的值,如果当时栈为空,则输出'E'。堆栈开始为空。
- 输出:
-
对于每组测试数据,根据其中的命令字符来处理堆栈;并对所有的'A’操作,输出当时栈顶的值,每个占据一行,如果当时栈为空,则输出'E’。当每组测试数据完成后,输出一个空行。
- 样例输入:
-
3
A
P 5
A
4
P 3
P 6
O
A
0
- 样例输出:
-
E
5 3
思路:
基本的堆栈数据操作。
代码:
#include <stdio.h>
#include <string.h>
#define N 10000
int stack[N];
int top;
void init()
{
top = 0;
}
int notEmpty()
{
if (top <= 0)
return 0;
else
return 1;
}
int push(int x)
{
if (top < N)
{
stack[top++] = x;
return 1;
}
return 0;
}
int pop(int *x)
{
if (notEmpty())
{
*x = stack[--top];
return 1;
}
else
return 0;
}
int printTop()
{
if (notEmpty())
{
printf("%d\n", stack[top-1]);
return 1;
}
else
{
printf("E\n");
return 0;
}
}
int main(void)
{
int n, i;
char op[2];
int x;
while (scanf("%d", &n) != EOF && n)
{
init();
for (i=0; i<n; i++)
{
scanf("%s", op);
if (op[0] == 'A')
printTop();
else if (op[0] == 'P')
{
scanf("%d", &x);
push(x);
}
else if (op[0] == 'O')
pop(&x);
//for (int j=0; j<top; j++)
// printf("%d\t", stack[j]);
//printf("\n");
}
printf("\n");
}
return 0;
}
/**************************************************************
Problem: 1108
User: liangrx06
Language: C
Result: Accepted
Time:10 ms
Memory:952 kb
****************************************************************/
最新文章
- html设置透明度
- Eclipse安装ZooKeeper插件
- ios delegate, block, NSNotification用法
- 维护计划生成的SSIS包存储在哪
- SpringMVC,MyBatis商品的增删改查
- linux驱动系列之s3c2440内存布局
- jQuery 选择器【1】
- (转)SQL中的ISNULL函数介绍
- DictoryInfo.GetFiles
- UVa 11456 - Trainsorting
- sparklyr包:实现Spark与R的接口
- angular 表达式与指令
- 关于JSP页面URL传值所遇到的小问题
- 夜神模拟器链接Android studoid
- Module build failed: Error: Cannot find module &#39;babel-runtime/core-js/get-it
- springboot +redis配置
- 为jqweui增加selectcallback方法
- cocos2dx-lua控制台报错集合
- 内部排序->;插入排序->;其它插入排序->;2-路插入排序
- Stringbuffer与substring