九度OJ 1108:堆栈的使用 (堆栈)
时间限制: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
****************************************************************/
九度OJ 1108:堆栈的使用 (堆栈)的更多相关文章
- 九度OJ 1108 堆栈的使用
题目地址:http://ac.jobdu.com/problem.php?pid=1108 题目描述: 堆栈是一种基本的数据结构.堆栈具有两种基本操作方式,push 和 pop.Push一个值会将其压 ...
- 【九度OJ】题目1108:堆栈的使用 解题报告
[九度OJ]题目1108:堆栈的使用 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1108 题目描述: 堆栈是一种基本的数据结构.堆 ...
- 九度oj题目&吉大考研11年机试题全解
九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码). http://ac.jobdu.com/problem.php?pid=11 ...
- 【九度OJ】题目1153:括号匹配问题 解题报告
[九度OJ]题目1153:括号匹配问题 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1153 题目描述: 在某个字符串(长度不超过1 ...
- 九度oj 题目1087:约数的个数
题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...
- 九度OJ 1502 最大值最小化(JAVA)
题目1502:最大值最小化(二分答案) 九度OJ Java import java.util.Scanner; public class Main { public static int max(in ...
- 九度OJ,题目1089:数字反转
题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转. 输入: 第一行一个正整数表示测试数据的个数n. ...
- 九度OJ 1500 出操队形 -- 动态规划(最长上升子序列)
题目地址:http://ac.jobdu.com/problem.php?pid=1500 题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往 ...
- 九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1531 题目描述: 小虎是游戏中的一个国王,在他管理的国家中发行了很多不同面额的纸币,用这些纸币进行任意的组合可以在 ...
随机推荐
- angular杂谈
<element ng-include="filename" onload="expression" autoscroll="expressio ...
- Linux内存管理【转】
转自:http://www.cnblogs.com/wuchanming/p/4360264.html 转载:http://www.kerneltravel.net/journal/v/mem.htm ...
- 什麼是 struct,union,enumeration 的 tag ?
struct tag { member-list }; union tag { member-list }; enum tag { member-list }; union test1 { int a ...
- postgresql 10 分页
示例: select * from test limit 2 offset 2; limit:指查多少条数据 offset:从下标多少开始查,下标从0开始,不能为负数. offset计算公式: var ...
- 两个 DataTable 读取重复数据
今天正好用到Excel 导入转换成table , 文件中数据要和数据库里数据进行比对,有重复的抛出重复数据. 和大家分享下,欢迎高手留言指点.有问题可以留言关注! /// <summary> ...
- rocketMq---------相关命令
搭建就不详细说了,cent7.x的系统,openJdk8,maven3.x,gradle4.10.2, git 1.8.3.1 直接下载相关的二进制压缩包,解压即用,方便. 下面看常用的管理命令 ro ...
- CODECHEF Nov. Challenge 2014 Chef & Churu
@(XSY)[分塊] Hint: 題目原文是英文的, 寫得很難看, 因此翻譯為中文. Input Format First Line is the size of the array i.e. \(N ...
- this.class.getClassLoader().getResourceAsStream
this.getClass().getClassLoader().getResource("template"); 首先,调用对象的getClass()方法是获得对象当前的类 ...
- arcgis andriod开发程序实例,有图有真相
本程序使用Google公司最新开发工具andriod studio开发,实现了地图的加载,放大,缩小,GPS定位,画点.线,面工具,本程序有偿提供源代码 主界面,加载tpk切片 放大: 加载geoda ...
- Intent 传递对象
方法: 可以让这个要传递的对象所属类实现Serializable或者Parcelable接口, 然后利用onCreate函数中的Bundle参数作为载体,传递这个对象. 例如: <span st ...