利用之前的链式栈实现左右符号匹配检测
2014-05-08 23:37
225 查看
哈哈哈
#include <stdio.h> #include <stdlib.h> #include "LinkStack.h" /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int Is_Left(char c) { int ret = 0; switch(c){ case '(': case '{': case '[': case '<': case '\'': case '\"': ret = 1; break; default: ret = 0; break; } return ret; } int Is_Right(char c) { int ret = 0; switch(c){ case ')': case '}': case ']': case '>': case '\'': case '\"': ret = 1; break; default: ret = 0; break; } return ret; } int match(char left,char right) { int ret = 0; switch(left){ case '(': ret = (right == ')'); break; case '{': ret = (right == '}'); break; case '[': ret = (right == ']'); break; case '<': ret = (right == '>'); break; case '\'': ret = (right == '\''); break; case '\"': ret = (right == '\"'); break; default: ret = 0; break; } return ret; } int Scan(const char* str) { int ret = 0; LinkStack* stack = LinkStack_Create(); int i =0; while(str[i] != '\0'){ if(Is_Left(str[i])){ LinkStack_Push(stack,(void*)(str + i)); }else if(Is_Right(str[i])){//这里要改成else if,对每一个字符他每次都只判断一次。否则如果遇到单引号或者双引号只出现一个的时候,他也会判断成匹配成功 char* c = (char*)LinkStack_Pop(stack); if((c == NULL) || (!match(*c,str[i]))){ printf("%c does not match!\n",str[i]); ret = 0; break; } } i++; } if((LinkStack_Size(stack) == 0) && (str[i] == '\0')){ printf("Succed!!\n"); ret = 1; }else{ printf("Failed!!\n"); ret = 0; } LinkStack_Destroy(stack); return ret; } int main(int argc, char *argv[]) { const char* code = "{}\'[]{}"; Scan(code); return 0; }
相关文章推荐
- 利用Linux 自带的GNU正则表达式库实现查找字符串中全部匹配左右边界限定的子串
- C++,利用链式栈实现括号匹配,界面友好,操作方便,运行流畅
- 利用栈实现括号匹配检测
- C++,利用链式栈实现括号匹配,界面友好,操作方便,运行流畅
- C++,利用链式栈实现括号匹配,界面友好,操作方便,运行流畅
- 利用String类或StringBuffer类的方法,对输入的Email地址进行有效性验证。提示: 1)Email地址中应包含“@”和“.”符号; 2)“@”符号应该在“.”符号之前; 3
- java版 利用栈实现括号匹配
- 文件通配符匹配检测C算法实现
- 利用栈实现的()。。匹配c++程序
- 利用ViewPager实现可左右滑动的Action Tab
- Android 仿美团网,探索利用ViewPager+GridView实现左右滑动查看更多分类的功能
- Android 利用ViewPager实现图片可以左右循环滑动效果附代码下载
- 利用VHDL实现异步通信起始位正确检测
- 利用opencv实现人脸检测(C++版)
- TensorFlow实现人脸识别(5)-------利用训练好的模型实时进行人脸检测
- 利用WMI实现系统补丁检测分析
- 【原创源码】(03):利用简单递归算法,实现文本匹配、翻译。
- 使用栈实现判断输入的符号是否匹配
- 【TopDesk】3.1.1. 利用IMMNotificationClient实现耳机插拔检测
- 利用Spring的AOP编程和JAVA自定义注解,实现Web项目的HTTP请求头域检测