Problem A: 判断操作是否合法(栈和队列)

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 67  Solved: 22

Description

假设以I和O分别表示进栈和出栈操作,栈的初态和终态均为空,进栈和出栈的操作序列可表示为仅由I和O组成的序列。

顺序栈的定义为

typedef struct
{
ElemType data[SizeMax];
int top;
}SqStack;
编写一个算法,判断栈中的序列是否合法!若合法则返回1,否则返回0.
需编写的算法为:int judge(SqStack *s);

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: 判断操作是否合法(栈和队列)相关推荐

  1. 汉诺塔(三) 判断操作是否合法 + 栈(stack)数组

    题目来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=93 汉诺塔(三) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 ...

  2. 数据结构——栈与队列操作(用栈模拟队列)

    [栈与队列操作] 问题描述:假设有两个长度相同的栈 S1,S2,已知以下入栈.出栈.判栈满和判栈空操作: void Push(S,x); Elemtype Pop(S); bool StackFull ...

  3. 数据结构与算法第二章 线性表、栈、队列、数组、字符串、树、二叉树、哈希表的增删查

    03 增删查:掌握数据处理的基本操作,以不变应万变 通过前面课时的学习,相信你已经建立了利用数据结构去完成时空转移的思想.接下来,你需要在理论思想的指导下灵活使用.其实,要想灵活使用数据结构,你需要先 ...

  4. 栈,队列(纸牌游戏,小猫钓鱼)

    文章目录 队列:FIFO 实现顺序队列: 1.顺序循环队基本操作 2.链队 栈 1. 顺序栈 栈的元素 初始化操作 入栈操作 判断顺序栈是否为空 栈的长度 出栈 清空一个栈 销毁顺序栈 2.链式栈 应 ...

  5. 《数据结构》实验三:栈和队列实验 (实验报告)

    一.实验目的 巩固栈和队列数据结构,学会运用栈和队列. 1.回顾栈和队列的逻辑结构和受限操作特点,栈和队列的物理存储结构和常见操作. 2.学习运用栈和队列的知识来解决实际问题. 3.进一步巩固程序调试 ...

  6. 集合中篇—栈与队列区块链

    集合中篇-栈与队列 1. 准备 Java的集合实现了栈与队列,我们直接调用就可以实现功能,可是平时就见过Queue.Stack.Deque这些字眼,完全不知道怎么回事,下面就来梳理一下他们的关系,先来 ...

  7. 入栈和出栈操作的合法序列判定

    入栈和出栈操作的合法序列判定 [问题描述]假设以I和O分别表示入栈和出栈操作,栈的初态和终态均为空.入栈和出栈的操作序列表示为仅由I和O组成的序列.请编写程序判断一个给定序列是否合法. [输入形式]给 ...

  8. abap判断包含字符当中包含小数点_剑指Offer整理3 -- 栈和队列 + 数学和字符串

    专题3 栈和队列 + 数学和字符串 专题3-1 栈和队列 1. 栈的压入弹出序列 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字 ...

  9. 【数据结构与算法】之栈与队列的应用和操作

    栈 一.概念 栈(stack)又名堆栈,它是一种运算受限的线性表: 限定仅在表尾进行插入和删除操作的线性表.允许插入和删除的一端为栈顶,另一端是栈底. 向一个栈插入新元素又称作进栈.入栈或压栈,它是把 ...

最新文章

  1. php while循环控制实例讲解
  2. Apache Kafka-CMAK(kafka manager)安装部署使用
  3. 安装SeleniumPhantomJS
  4. Azure恢复服务-DPM联机备份SQL数据库
  5. java web 多语言_基于 Selenium WebDriver 实现多语言环境下自动化截图
  6. android wifi是否可用,Android检测网络连接是否可用
  7. Arithmetic Sequence
  8. 【VS开发】使用CTabView分割多页卡窗口
  9. Atitit 签名规范 attilax总结 安全签名规范 v2 r99.docx
  10. python装饰器讲解_Python装饰器讲解的不能再通俗易懂了(建议收藏)
  11. Python 调用 Everything 进行查找文件
  12. 原滴滴副总裁叶杰平加盟贝壳找房,任首席科学家,用AI帮你找房
  13. 硬件设计基础——电阻、电容、电感、磁珠
  14. 2021-2027全球及中国特种机器人行业研究及十四五规划分析报告
  15. php 截图ppt文件,介绍ppt文件截图并插入
  16. 模电学习笔记(七)——差分放大器电路(减法器)
  17. OC xcode 两个view重叠,先后层次关系的调整
  18. java 与 汇编_清华大学出版社-图书详情-《汇编语言与计算机体系结构——使用C++和Java》...
  19. 推荐一款文件文档在线预览解决方案
  20. 商标注册初审公告后可以使用吗?

热门文章

  1. 星形和雪花模型_数据仓库多维数据模型设计
  2. et200sp模块接线手册_西门子PN/PN耦合器学习应用系列(1)-外观及接线
  3. linux mv 保持目录结构_(三)Linux系统目录结构
  4. setdata改数组里的值 微信小程序_今日艰难笔记redux小程序随记
  5. android 根据bounds坐标进行点击操作_炫酷的Android时钟UI控件,隔壁产品都馋哭了...
  6. linux6.5 查看分辨率命令,centos6.5跟centos7的top命令中移动查看顺序的指令怎么不一样...
  7. 攀爬网怎么取消_桂林旅游学院宿舍条件怎么样
  8. 图像语义分割_图像语义分割(9)-DeepLabV3: 再次思考用于图像语义分割的空洞卷积...
  9. 如何和后台接触的_后台产品,不只是做支持
  10. 计算机网络把许多什么连接在一起,计算机网络技术基础知识汇总习题