zoukankan
html css js c++ java
括号匹配(栈实现)
#include <cstdio> #include <iostream> using namespace std; #define MAXSIZE 20 typedef struct { char *base; char *top; int stacksize; }SqStack; void InitStack(SqStack &S) { S.base = (char *)malloc( MAXSIZE * sizeof(char) ); if(S.base == NULL) exit(-2); S.top = S.base; S.stacksize = MAXSIZE; } void GetTop(SqStack S, char &e) { if(S.top == S.base) return; e = *(S.top - 1); } void Push(SqStack &S, char e) // 不考虑栈满 { *S.top++ = e; } void Pop(SqStack &S, char &e) { if(S.top == S.base) return; S.top--; e = *S.top; } bool Match(char c, SqStack &my_stack, bool &tag) { char e; Pop(my_stack, e); if ( c != e ) { tag = false; free(my_stack.base); return false; // match fail } return true; // match success } void Correct(char *expr, bool &tag) { tag = true; SqStack my_stack; InitStack (my_stack); for( int i = 0; expr[i] != '\0'; i++ ) { char c = expr[i]; switch(c) { case '{' : case '[' : case '(' : Push (my_stack, c); break; case '}' : if( Match('{', my_stack, tag) == false ) // match fail return; break; case ']' : if( Match('[', my_stack, tag) == false ) // match fail return; break; case ')' : if( Match('(', my_stack, tag) == false ) // match fail return; break; default : break; // 其它字符 } } if(my_stack.top != my_stack.base) // e.g.: "[r" tag = false; free(my_stack.base); } int main(void) { // freopen("cin.txt", "r", stdin); char my_expr[MAXSIZE]; while(cin >> my_expr) { bool tag = true; Correct( my_expr, tag); tag ? printf("匹配成功\n") : printf("匹配失败\n"); } return 0; }
(另见
http://blog.csdn.net/justme0/article/details/7424798
)
查看全文
相关阅读:
Setting up jQuery Unobtrusive Validation
Valid vs Validate
HTML Tags containing Vue.js v-if and v-for directives flash at loading
What does a CSS selector in square brackets select in HTML?
Template refs
How to check if a variable is not null?
Android中的Context
Android从零基础到App上线
ConstraintLayout 使用汇总
ConstraintLayout的使用
原文地址:https://www.cnblogs.com/jjtx/p/2533501.html
最新文章
一步步学习微软InfoPath2010和SP2010--第三章节--表单设计基础:处理InfoPath布局、控件和视图(4)--控件属性功能区
一步步学习微软InfoPath2010和SP2010--第三章节--表单设计基础:处理InfoPath布局、控件和视图(3)--InfoPath控件
一步步学习微软InfoPath2010和SP2010--第三章节--表单设计基础:处理InfoPath布局、控件和视图(2)--添加一个布局和表格
一步步学习微软InfoPath2010和SP2010--第三章节--表单设计基础:处理InfoPath布局、控件和视图(1)--表单布局
一步步学习微软InfoPath2010和SP2010--第三章节--表单设计基础:处理InfoPath布局、控件和视图
一步步学习微软InfoPath2010和SP2010--第二章节--表单需求:使用决策矩阵(8)--关键点
切比雪夫大数定律、伯努利大数定律、辛钦大数定律三者关系
宋浩《概率论与数理统计》笔记---5.1、大数定理
切比雪夫不等式
宋浩《概率论与数理统计》笔记---4.5、中心矩与原点矩
热门文章
宋浩《概率论与数理统计》笔记---4.4.2、相关系数
协方差和相关系数通俗理解
宋浩《概率论与数理统计》笔记---4.4.1、 协方差
宋浩《概率论与数理统计》笔记---4.3.2、 常见连续型的期望与方差
宋浩《概率论与数理统计》笔记---4.3.1、 常见离散型的期望与方差
宋浩《概率论与数理统计》笔记---4.2.2、方差的性质
Uncaught ReferenceError: vm is not defined vue.js 2.0
Vue.js
Vue Options / Data
What is difference between 'data:' and 'data()' in Vue.js?
Copyright © 2011-2022 走看看