Problem A: 判断操作是否合法(栈和队列)
Problem A: 判断操作是否合法(栈和队列)
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 67 Solved: 22
Description
假设以I和O分别表示进栈和出栈操作,栈的初态和终态均为空,进栈和出栈的操作序列可表示为仅由I和O组成的序列。
顺序栈的定义为
Input
输入为一个字符串,表示进栈出栈的操作序列,该序列存储在栈中。
Output
若操作序列合法则输出“Yes”,否则输出"No"。
Sample Input
IOIIOIOO
Sample Output
Yes
HINT
1、只需提交你所编写的算法
2、栈的初态和终态均为空
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SizeMax 105
typedef char ElemType;
typedef struct
{ElemType data[SizeMax];int top;
}SqStack;
void InitStack(SqStack *&s)
{s=(SqStack*)malloc(sizeof(SqStack));s->top=-1;
}
bool Push(SqStack *&s,ElemType c)
{if(s->top==SizeMax-1)return false;s->top++;s->data[s->top]=c;return true;
}
int judge(SqStack *s)
{int i=-1;if(s->top==-1)return 1;while(s->top>=-1){if(s->data[s->top]=='I')i++;if(s->data[s->top]=='O')i--;if(i>-1)return 0;s->top--;}if(i!=-1)return 0;else return 1;
}
void DestroyStack(SqStack *&s)
{free(s);
}
int main()
{SqStack *s=NULL;InitStack(s);char c[SizeMax];gets(c);for(int i=0;i<(int)strlen(c);i++)Push(s,c[i]);if(judge(s))printf("Yes\n");else printf("No\n");DestroyStack(s);return 0;
}
Problem A: 判断操作是否合法(栈和队列)相关推荐
- 汉诺塔(三) 判断操作是否合法 + 栈(stack)数组
题目来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=93 汉诺塔(三) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 ...
- 数据结构——栈与队列操作(用栈模拟队列)
[栈与队列操作] 问题描述:假设有两个长度相同的栈 S1,S2,已知以下入栈.出栈.判栈满和判栈空操作: void Push(S,x); Elemtype Pop(S); bool StackFull ...
- 数据结构与算法第二章 线性表、栈、队列、数组、字符串、树、二叉树、哈希表的增删查
03 增删查:掌握数据处理的基本操作,以不变应万变 通过前面课时的学习,相信你已经建立了利用数据结构去完成时空转移的思想.接下来,你需要在理论思想的指导下灵活使用.其实,要想灵活使用数据结构,你需要先 ...
- 栈,队列(纸牌游戏,小猫钓鱼)
文章目录 队列:FIFO 实现顺序队列: 1.顺序循环队基本操作 2.链队 栈 1. 顺序栈 栈的元素 初始化操作 入栈操作 判断顺序栈是否为空 栈的长度 出栈 清空一个栈 销毁顺序栈 2.链式栈 应 ...
- 《数据结构》实验三:栈和队列实验 (实验报告)
一.实验目的 巩固栈和队列数据结构,学会运用栈和队列. 1.回顾栈和队列的逻辑结构和受限操作特点,栈和队列的物理存储结构和常见操作. 2.学习运用栈和队列的知识来解决实际问题. 3.进一步巩固程序调试 ...
- 集合中篇—栈与队列区块链
集合中篇-栈与队列 1. 准备 Java的集合实现了栈与队列,我们直接调用就可以实现功能,可是平时就见过Queue.Stack.Deque这些字眼,完全不知道怎么回事,下面就来梳理一下他们的关系,先来 ...
- 入栈和出栈操作的合法序列判定
入栈和出栈操作的合法序列判定 [问题描述]假设以I和O分别表示入栈和出栈操作,栈的初态和终态均为空.入栈和出栈的操作序列表示为仅由I和O组成的序列.请编写程序判断一个给定序列是否合法. [输入形式]给 ...
- abap判断包含字符当中包含小数点_剑指Offer整理3 -- 栈和队列 + 数学和字符串
专题3 栈和队列 + 数学和字符串 专题3-1 栈和队列 1. 栈的压入弹出序列 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字 ...
- 【数据结构与算法】之栈与队列的应用和操作
栈 一.概念 栈(stack)又名堆栈,它是一种运算受限的线性表: 限定仅在表尾进行插入和删除操作的线性表.允许插入和删除的一端为栈顶,另一端是栈底. 向一个栈插入新元素又称作进栈.入栈或压栈,它是把 ...
最新文章
- php while循环控制实例讲解
- Apache Kafka-CMAK(kafka manager)安装部署使用
- 安装SeleniumPhantomJS
- Azure恢复服务-DPM联机备份SQL数据库
- java web 多语言_基于 Selenium WebDriver 实现多语言环境下自动化截图
- android wifi是否可用,Android检测网络连接是否可用
- Arithmetic Sequence
- 【VS开发】使用CTabView分割多页卡窗口
- Atitit 签名规范 attilax总结 安全签名规范 v2 r99.docx
- python装饰器讲解_Python装饰器讲解的不能再通俗易懂了(建议收藏)
- Python 调用 Everything 进行查找文件
- 原滴滴副总裁叶杰平加盟贝壳找房,任首席科学家,用AI帮你找房
- 硬件设计基础——电阻、电容、电感、磁珠
- 2021-2027全球及中国特种机器人行业研究及十四五规划分析报告
- php 截图ppt文件,介绍ppt文件截图并插入
- 模电学习笔记(七)——差分放大器电路(减法器)
- OC xcode 两个view重叠,先后层次关系的调整
- java 与 汇编_清华大学出版社-图书详情-《汇编语言与计算机体系结构——使用C++和Java》...
- 推荐一款文件文档在线预览解决方案
- 商标注册初审公告后可以使用吗?
热门文章
- 星形和雪花模型_数据仓库多维数据模型设计
- et200sp模块接线手册_西门子PN/PN耦合器学习应用系列(1)-外观及接线
- linux mv 保持目录结构_(三)Linux系统目录结构
- setdata改数组里的值 微信小程序_今日艰难笔记redux小程序随记
- android 根据bounds坐标进行点击操作_炫酷的Android时钟UI控件,隔壁产品都馋哭了...
- linux6.5 查看分辨率命令,centos6.5跟centos7的top命令中移动查看顺序的指令怎么不一样...
- 攀爬网怎么取消_桂林旅游学院宿舍条件怎么样
- 图像语义分割_图像语义分割(9)-DeepLabV3: 再次思考用于图像语义分割的空洞卷积...
- 如何和后台接触的_后台产品,不只是做支持
- 计算机网络把许多什么连接在一起,计算机网络技术基础知识汇总习题