博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构实验题--判断入栈出栈操作序列是否合法
阅读量:4613 次
发布时间:2019-06-09

本文共 1030 字,大约阅读时间需要 3 分钟。

假设以I和O分别代表入栈和出栈操作,设计一个算法判断任一给定的栈操作序列是否合法。(例如:IOIOIIOOIO)

算法的设计思想:依次扫描出栈入栈操作序列,每扫描至一个位置,需检查出栈次数是否大于入栈次数,若大则非法。

扫描结束后,再检查出栈次数与入栈次数是否相等,若不相等,则非法。

C代码如下:

1 #include
2 #include
3 #include
4 #include
5 #include
6 7 char s[1000]; 8 9 /*10 * 判断一组入栈出栈操作序列是否合法的算法11 *12 **Tue Sep 17 2013 wuyudong
13 */14 15 /**16 *Judge - 判断函数17 *@str : 一组入栈出栈操作序列,默认为字符型18 *19 */20 bool Judge(char *str)21 {22 int i, I_count, O_count; 23 i = I_count = O_count = 0;24 25 while (str[i] != '\0') {26 switch (str[i]) {27 case 'I': 28 I_count++;29 break;30 case 'O':31 O_count++;32 if (O_count > I_count) {33 printf("序列非法!\n"); return false;34 }35 break;36 default:37 break;38 }39 i++;40 }41 if (I_count != O_count) {42 printf("序列非法\n");43 return false;44 } else {45 printf("序列合法\n");46 return true;47 }48 }49 50 int main()51 {52 while (gets(s)) {53 Judge(s);54 }55 return 0; 56 }

 

转载于:https://www.cnblogs.com/cpoint/p/3367333.html

你可能感兴趣的文章
nrf51 SDK自带例程的解读
查看>>
SESSION技术
查看>>
数据结构(五)之直接插入排序
查看>>
SQL函数——LENGTH()和LENGTHB()
查看>>
vim - manual -个人笔记
查看>>
为什么我们程序员难晋升
查看>>
详解Javascript中prototype属性(推荐)
查看>>
angularjs实现首页轮播图
查看>>
Git 对象 和checkout 和stash的笔记
查看>>
团队项目总结2-服务器通信模型和顺序图
查看>>
hdu 1085 Holding Bin-Laden Captive!
查看>>
[周记]8.7~8.16
查看>>
递归定义
查看>>
kindeditor 代码高亮设置
查看>>
互联网产品的商业模式
查看>>
图的邻接表存储
查看>>
2018 leetcode
查看>>
各浏览器对 onbeforeunload 事件的支持与触发条件实现有差异
查看>>
PHP中获取当前页面的完整URL
查看>>
所谓输入掩码技术,即只有数字键起作用
查看>>