数据结构与算法问题 堆栈使用 2011年吉林大学计算机研究生机试真题

题目描述:

堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,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 <iostream>
#include <stack>
using namespace std;

int main()
{
	int n, data;
	char a;

	cin >> n;
	while (n != 0&&n<=10000)
	{
		stack<int >s;
		for (int i = 0; i < n; i++)
		{
			cin >> a;
			switch (a)
			{
			case 'P':
			{
						cin >> data;
						s.push(data);
						break;
			}
			case 'O':
			{
						if (!s.empty())
						{

							s.pop();
						}
						break;
			}
			case 'A':
			{
						if (s.empty())
						{
							cout << "E";
							cout << endl;
							break;
						}
						else
						{
							cout << s.top();
							cout << endl;
							break;
						}
			}
			default:
				break;
			}
		}
		cout << endl;
		cin >> n;

	}

}

数据结构与算法问题 堆栈使用 2011年吉林大学计算机研究生机试真题

时间: 2024-11-09 05:14:13

数据结构与算法问题 堆栈使用 2011年吉林大学计算机研究生机试真题的相关文章

2011年哈尔滨工业大学计算机研究生机试真题

题目连接:点击打开链接 解题思路: 暴力 完整代码: #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <set> using namespace std; const int INF = 1000000000; string s; int main() { #ifdef DoubleQ freopen("in.t

九度oj 1002 Grading 2011年浙江大学计算机及软件工程研究生机试真题

1 #include<iostream> 2 #include<queue> 3 #include<cstdio> 4 #include<cstring> 5 #include<cmath> 6 #include<algorithm> 7 using namespace std; 8 int map[15][15]; 9 int main(){ 10 int P,T,G1,G2,G3,GJ; 11 while(cin>>P

九度oj 1001 A+B for Matrices 2011年浙江大学计算机及软件工程研究生机试真题

题目1001:A+B for Matrices 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:15235 解决:6172 题目描述: This time, you are supposed to find A+B where A and B are two matrices, and then count the number of zero rows and columns. 输入: The input consists of several test cases, each st

九度oj 1004 Median 2011年浙江大学计算机及软件工程研究生机试真题

题目1004:Median 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:14162 解决:3887 题目描述: Given an increasing sequence S of N integers, the median is the number at the middle position. For example, the median of S1={11, 12, 13, 14} is 12, and the median of S2={9, 10, 15, 16, 1

数据结构和算法-006 堆栈

堆栈,都懂得.先进后出.直接看代码吧,实现以下功能: 创建堆栈 压入值 弹出值 查看栈顶值 压入一组值 public class TheStack {          private String [] stackArray;          private int stackSize;          private int topOfStack = -1;          TheStack(int size){         stackSize = size;           

数据结构与算法2-4 堆栈链式存储

链表中,只有一端进行插入与删除 在表头的位置,以避免需要知道实际数据长度 结构: typedef struct Node() { ElementType data; struct node *Next; }List; List *Ptrl; 构造: List *empty() { List *Ptrl; Ptrl=(List *)malloc(sizeof(List)); Ptrl->Next=NULL; return Ptrl; } 判断是否是空表 int isEmpty(List *Ptrl

算法笔记_212:第七届蓝桥杯软件类决赛真题(Java语言B组)

目录 1 愤怒小鸟 2 反幻方 3 打靶 4 路径之谜 5 碱基 6 圆圈舞 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 愤怒小鸟 愤怒小鸟 X星球愤怒的小鸟喜欢撞火车! 一根平直的铁轨上两火车间相距 1000 米 两火车 (不妨称A和B) 以时速 10米/秒 相对行驶. 愤怒的小鸟从A车出发,时速50米/秒,撞向B车, 然后返回去撞A车,再返回去撞B车,如此往复.... 两火车在相距1米处停车. 问:这期间愤怒的小鸟撞 B 车多少次? 注意:需要提交的是一个整数(表示撞B车的次数),不要

算法笔记_208:第六届蓝桥杯软件类决赛真题(Java语言A组)

目录 1 胡同门牌号 2 四阶幻方 3 显示二叉树 4 穿越雷区 5 切开字符串 6 铺瓷砖   前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 胡同门牌号 标题:胡同门牌号 小明家住在一条胡同里.胡同里的门牌号都是连续的正整数,由于历史原因,最小的号码并不是从1开始排的. 有一天小明突然发现了有趣的事情: 如果除去小明家不算,胡同里的其它门牌号加起来,刚好是100! 并且,小明家的门牌号刚好等于胡同里其它住户的个数! 请你根据这些信息,推算小明家的门牌号是多少? 请提交该整数,不要填写任何多

Pascal数据结构与算法

第一章 数据结构与算法的引入 1.1 数据结构的基本概念 一. 学习数据结构的意义 程序设计 = 数据结构 + 算法 目前,80%的待处理的数据具有“算法简单”(四则运算.检索.排序等),“对象复杂”(数据类型不同.数据量大.需要保存)等特点,故合理组织数据.选择较好的数据结构可为高效算法(时间少.占用空间小)提供理想的对象. 二.基本术语 1.数据(data): 是对客观事物的符号的表示,是所有能输入到计算机中并被计算机程序处理的符号的总称.(P1表1-1中,学号.姓名.性别.民族等列为字符型