简单的用栈来实现平衡符号的程序

来源:互联网 发布:贾雷德·戴蒙德 知乎 编辑:程序博客网 时间:2024/06/11 18:36

简单的实现检验是否每件事情都能成对出现的一个程序,于是每一个右花括号、右方括号和右圆括号必然对应相应的左括号,系列“【()】”是合法的,“【(】)”是错误的。我们仅对右圆括号、方括号和花括号进行检验并忽略出现的任何字符,这个简单的算法如下:

做一个空栈。读入字符直到文件尾,如果一个字符是一个开放符号,则将其推入栈中,如果字符是一个封闭符号,则当栈空时报错。否则,将栈元素弹出,如果弹出的符号不是对应的开放符号,则报错,在文件尾,如果栈非空则报错。

程序如下:

#include "BT_Stack.h"#include <string.h>int main(){char s[100];BT_Stack<char> stack;printf("Please input the string: \n");scanf("%s", s);int len = strlen(s);bool isTrue = true;for(int i = 0; i < len; i++){switch(s[i]){case '(':case '[':case '{':stack.push(s[i]);break;case ')':{char top = stack.getTop();if(top == 0 || top != '(')isTrue = false;elsestack.pop();}break;case ']':{char top = stack.getTop();if(top == 0 || top != '[')isTrue = false;elsestack.pop();}break;case '}':{char top = stack.getTop();if(top == 0 || top != '{')isTrue = false;elsestack.pop();}break;default:break;}if(isTrue == false)break;}if(!stack.empty())isTrue = false;if(isTrue)printf("this string is right! \n");elseprintf("this is string is false \n");system("pause");return 0;}


 

原创粉丝点击