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
)
查看全文
相关阅读:
第一部分:开发前的准备-第二章 基础入门
多线程笔记
.net平台下垃圾回收机制
xml基本操作和保存配置文件应用实例
.net平台下C#socket通信(中)
.net平台下C#socket通信(上)
泛型
面向过程和面向对象及面向对象的三大特征
值类型和引用类型及参数传递
js中typeof与instanceof区别
原文地址:https://www.cnblogs.com/jjtx/p/2533501.html
最新文章
【Jquery】之DOM操作
二、八、十、十六进制之间的转换
Netty4.x中文教程系列(二) Hello World !<转>
Java NIO 系列教程 <转>
ExecutorService中submit和execute的区别<转>
Java 四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor
java读取配置文件内容
slf4j+log4j2 pom配置
tomcat出现的PermGen Space问题<转>
spring websocket + stomp 实现广播通信和一对一通信<转>
热门文章
Spring WebSocket初探2 (Spring WebSocket入门教程)<转>
生命只有一次,你可以用它来做一点伟大的事情
第三部分:Android 应用程序接口指南---第一节:应用程序组件---第一章1-1.Fragment
第一部分:开发前的准备-第九章 开发入门
第一部分:开发前的准备-第八章 Android SDK与源码下载
第一部分:开发前的准备-第七章 怎样做出一个好应用
第一部分:开发前的准备-第六章 用户界面基础指导
第一部分:开发前的准备-第五章 平板与手机
第一部分:开发前的准备-第四章 多分辨率多屏幕的支持
第一部分:开发前的准备-第三章 Application 基本原理
Copyright © 2011-2022 走看看