BJFU_数据结构习题_243入栈和出栈的基本操作

2023-05-16

欢迎登录北京林业大学OJ系统
http://www.bjfuacm.com

243入栈和出栈的基本操作

描述
输入一个整数序列a1,a2,a3…,an。当ai不等于-1时将ai进栈;当ai=-1时,输出栈顶元素并将其出栈。
输入
多组数据,每组数据有两行,第一行为序列的长度n,第二行为n个整数,整数之间用空格分隔。当n=0时输入结束。
输出
对于每一组数据输出若干行。每行为相应的出栈元素。当出栈异常时,输出“POP ERROR”并结束本组数据的输出。
输入样例 1
5
1 2 -1 -1 1
5
1 -1 -1 2 2
0
输出样例 1
2
1
1
POP ERROR

#include<iostream>
using namespace std;
#define  MAX  100 
#define  OK	0
#define  ERROR -1
#define  OVERFLOW -2
typedef struct
{
	int *base;
	int *top;
	int stacksize;
}SqStack;
int InitSqStack(SqStack &S)
{
	S.base=new int[MAX];
	if(!S.base) return OVERFLOW;
	S.top=S.base;
	S.stacksize=MAX;
	return OK;
}
int Push(SqStack &S,int e)  
{
	if(S.top-S.base==S.stacksize)
		return ERROR;
	*S.top=e;
	S.top++;
	return OK;
}
int Pop(SqStack &S)  
{
	if(S.top==S.base)
		return ERROR;
	S.top--;
	return OK;
}
int Top(SqStack S)  
{
	if(S.top==S.base)
		return ERROR;
  	return *(S.top-1);
}
int main()
{
	int n;
	while(cin>>n&&n!=0)
	{
      	SqStack S;
		InitSqStack(S);
		int a[MAX];
		for(int j=0;j<n;j++)
			cin>>a[j];
		for(int i=0;i<n;i++)
		{
			if(a[i]!=-1)
				Push(S,a[i]);
			else
			{
				if(S.top!=S.base)
				{
					cout<<Top(S)<<endl;
					Pop(S);
				}
				else
				{
                  	cout<<"POP ERROR"<<endl;
					break;
				}
			}
		}
	}
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BJFU_数据结构习题_243入栈和出栈的基本操作 的相关文章

  • 网页限制F12,接触教程

    开启右键菜单 document oncontextmenu 61 function return true 开启文字选择 document onselectstart 61 function return true 开启复制 documen
  • 区间覆盖问题-贪心求解

    题目 https vjudge net problem OpenJ Bailian 2376 题目大意 本题给定两个整数n和t xff0c n表示接下来会输入n段区间 xff0c t表示需要覆盖的区间为 1 t 题目要求利用输入的n段区间来
  • DDL问题-贪心算法

    题目 题目大意 本题给出了若干个任务的DDL和对应的分值 xff0c 要求得出最少扣分值 xff0c 也就是求出最大得分 在DDL前完成任务可以得分 xff0c 否则就不能 解题思路 本题与区间覆盖问题有一些相似之处 xff0c 因此在贪心
  • TT 的神秘礼物-二分答案

    题目 题目大意 题目给出了一个长度为N的数组cat xff0c 要求产生新数组ans xff0c 其中ans由所有abs cat i cat j 组成 xff0c 其中i j且1 i xff1c j N 要求求出ans排序后的中位数 xff
  • 【区间选点 II】差分约束

    题目 题意 给定一个数轴上的 n 个区间 xff0c 要求在数轴上选取最少的点使得第 i 个区间 ai bi 里至少有 ci 个点 使用差分约束系统的解法解决这道题 Input 输入第一行一个整数 n 表示区间的个数 xff0c 接下来的
  • 【东东学打牌】复杂模拟

    题目 题意 最近 xff0c 东东沉迷于打牌 所以他找到 HRZ ZJM 等人和他一起打牌 由于人数众多 xff0c 东东稍微修改了亿下游戏规则 xff1a 所有扑克牌只按数字来算大小 xff0c 忽略花色 每张扑克牌的大小由一个值表示 A
  • 【Max Sum Plus Plus】区间dp

    题目 HDU 1024 传送门 题意 东东每个学期都会去寝室接受扫楼的任务 xff0c 并清点每个寝室的人数 每个寝室里面有ai个人 1 lt 61 i lt 61 n 从第i到第j个宿舍一共有sum i j 61 a i 43 43 a
  • 【TT的奖励】动态规划

    题目 题意 在大家不辞辛劳的帮助下 xff0c TT 顺利地完成了所有的神秘任务 神秘人很高兴 xff0c 决定给 TT 一个奖励 xff0c 即白日做梦之捡猫咪游戏 捡猫咪游戏是这样的 xff0c 猫咪从天上往下掉 xff0c 且只会掉在
  • 【ZJM要抵御宇宙射线】CSP模测T2

    题目 题目大意 本题给出平面二维坐标上的若干个点 xff0c 要求选取一个点做圆心 xff0c 此时可以以最短半径包含所有点 xff0c 求出圆心坐标和最短半径平方 xff0c 结果保留两位小数 解题思路 本题乍看只下可能觉得会很复杂 xf
  • 【宇宙狗的危机】CSP模测T4

    题目 题目描述 在瑞神大战宇宙射线中我们了解到了宇宙狗的厉害之处 xff0c 虽然宇宙狗凶神恶煞 xff0c 但是宇宙狗有一 个很可爱的女朋友 最近 xff0c 他的女朋友得到了一些数 xff0c 同时 xff0c 她还很喜欢树 xff0c
  • 【猫睡觉问题】较复杂模拟

    题目 HDU 3700 Cat 题目大意 题目给出一只猫每天若干个时间段有任务 xff0c 没有任务时猫可以睡觉 题目还给出两个数A和B xff0c 表示猫每次睡觉时间不能少于A小时且每次醒着的时间不能多于B小时 题目要求输出一天猫可能睡觉
  • linux 部署django时报错django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.3 or newer is required

    1 在项目中 init py中这个报错原因 xff0c python 3 5以上版本不支持这种方式 from pymysql import install as MySQLdb install as MySQLdb 解决 xff1a imp
  • 栈求解最大矩形

    题目描述 给一个直方图 xff0c 求直方图中的最大矩形的面积 例如 xff0c 下面这个图片中直方图的高度从左到右分别是2 1 4 5 1 3 3 他们的宽都是1 xff0c 其中最大的矩形是阴影部分 Input 输入包含多组数据 每组数
  • 负权环路问题-SPFA算法的应用

    题目描述 这一晚 xff0c TT 做了个美梦 xff01 在梦中 xff0c TT 的愿望成真了 xff0c 他成为了喵星的统领 xff01 喵星上有 N 个商业城市 xff0c 编号 1 xff5e N xff0c 其中 1 号城市是
  • Ubuntu Linux 安装部署 code-server 在线代码编写环境(含卸载教程)

    Ubuntu Linux 安装部署 code server 在线代码编写环境 xff08 含卸载教程 xff09 安装 code server开启服务及密码修改设置code server开机自启动卸载 code server 安装 code
  • 09 sprintf、printf函数的源码

    实现printf以及Sprintf源码 printf函数的全称为格式化输出函数 之所以叫做格式化出 xff0c 是因为这个函数提供有多种格式化输出方式 xff0c 可以向标准输出中输出某种格式的内容 本文目标是详细的讲述printf函数的用
  • C++后端开发(2.2.3)——POSIX网络API解析

    C 43 43 后端开发 xff08 2 2 3 xff09 POSIXAPI解析 0 前言网络中进程之间如何通信 xff1f POSIX介绍 1 POSIX网络API2 函数与内部过程分析2 1 Socket2 2 bind2 3 lis
  • 用pip查看要安装的python包的所有版本

    我使用的是ubuntu20 04 xff0c windows下操作相同 文章目录 正文附第一点第二点 xff1a 可能出现的bug 正文 首先 xff0c 我的pip版本如下 xff1a 然后 xff0c 就可以通过 xff1a span
  • python import 搜索包路径的机制,以及添加自定义python包的方法

    系统 xff1a win10 xff08 linux系统也是类似的方法 xff09 python xff1a 3 8 3 正文 python import 的搜索方法 在python中 xff0c 有模块 xff08 module xff0
  • pyplot.plot使用遇到:UserWarning: Starting a Matplotlib GUI outside of the main thread will likely fail

    问题出现的背景 xff1a 之前的工作 xff1a tensorflow利用for循环进行训练遇到的内存爆炸问题 OOM 文章目录 问题介绍解决方法 xff1a 方法一 xff1a 方法二 xff1a 方法三 xff1a 注意 xff1a

随机推荐