数据结构实验题--判断入栈出栈操作序列是否合法
2013-09-17 17:06
225 查看
假设以I和O分别代表入栈和出栈操作,设计一个算法判断任一给定的栈操作序列是否合法。(例如:IOIOIIOOIO)
算法的设计思想:依次扫描出栈入栈操作序列,每扫描至一个位置,需检查出栈次数是否大于入栈次数,若大则非法。
扫描结束后,再检查出栈次数与入栈次数是否相等,若不相等,则非法。
C代码如下:
算法的设计思想:依次扫描出栈入栈操作序列,每扫描至一个位置,需检查出栈次数是否大于入栈次数,若大则非法。
扫描结束后,再检查出栈次数与入栈次数是否相等,若不相等,则非法。
C代码如下:
#include<stdio.h> #include<string.h> #include<math.h> #include<ctype.h> #include<stdbool.h> char s[1000]; /* * 判断一组入栈出栈操作序列是否合法的算法 * **Tue Sep 17 2013 wuyudong <xueda120@gmail.com> */ /** *Judge - 判断函数 *@str : 一组入栈出栈操作序列,默认为字符型 * */ bool Judge(char *str) { int i, I_count, O_count; i = I_count = O_count = 0; while (str[i] != '\0') { switch (str[i]) { case 'I': I_count++; break; case 'O': O_count++; if (O_count > I_count) { printf("序列非法!\n"); return false; } break; default: break; } i++; } if (I_count != O_count) { printf("序列非法\n"); return false; } else { printf("序列合法\n"); return true; } } int main() { while (gets(s)) { Judge(s); } return 0; }
相关文章推荐
- 数据结构实验题--判断入栈出栈操作序列是否合法
- 判断栈操作序列是否合法
- 3.5判断出栈和入栈操作序列是否合法
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 2140 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列(sdutoj)
- 判断出栈序列是否合法
- POJ 1363 Rails 判断出栈序列是否合法
- 汉诺塔(三) 判断操作是否合法 + 栈(stack)数组
- 图结构练习——判断给定图是否存在合法拓扑序列
- Problem A: 判断操作是否合法(栈和队列)
- 数据结构:由有序数列创建一棵高度最小的二叉排序树与判断一 个序列是否为该二叉排序树中的一个合法查找序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 暑假集训 8.19 图结构练习——判断给定图是否存在合法拓扑序列 sdut2140
- 给定入栈序列,判断出栈序列是否合法
- POJ 1363 Rails 判断出栈序列是否合法
- 已知入栈顺序,判断某一序列是否为其合法出栈序列!
- 判断一个栈的弹出序列是否为合法序列