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
)
查看全文
相关阅读:
for循环练习-----ATM取款
面向对象基础项目----图书管理系统(数组)
Java基础学习(二)-- 二维数组、String、StringBuffer以及类和对象之详解
Java基础学习(一) -- Java环境搭建、数据类型、分支循环等控制结构、简单一维数组详解
js 解决由于(bom文件格式)产生的空白行
自适应网站设计对百度友好的关键:添加applicable-device标签(转)
浏览器内核控制标签--meta
HTML5的元素与结构标签
<img>标签的补充
HTML <head> 头部中的各类标签
原文地址:https://www.cnblogs.com/jjtx/p/2533501.html
最新文章
DOM映射
括号表达式
正则中字符串几个重要方法
##call继承
TWEEN动画
判断浏览器版本
[JQuery] 选择器
[JQuery] 中常用的属性和方法
事件
PHP基础Mysql扩展库
热门文章
PHP简单封装MysqlHelper类
PHP 文件与文件夹的创建和删除操作
PHP文件的上传与下载
PHP文件操作 读取与写入
JavaScript基础知识从浅入深理解(一)
Java基础学习补充 -- 异常处理和log4j日志
Java基础学习(六)-- 递归以及文件I/O流基础详解
Java基础学习(五)-- Java中常用的工具类、枚举、Java中的单例模式之详解
Java基础学习(四)-- 接口、集合框架、Collection、泛型详解
Java基础学习(三) -- OOP的三大特征、向上和向下转型、内部类之详解
Copyright © 2011-2022 走看看