字符串括号匹配检查
2012-09-24 19:33
155 查看
// IsMatch.cpp : Defines the entry point for the console application. // #include "stdafx.h" struct CharStack { struct Node { Node(char c) { this->c=c; this->pNext=NULL; } char c; struct Node *pNext; }; struct Node *pTop; CharStack() { pTop=NULL; } void push(char c) { Node* pNode=new Node(c); if(pTop==NULL) { pTop=pNode; } else { pNode->pNext=pTop; pTop=pNode; } } char pop() { if(pTop==NULL) return '\0'; else { char c=pTop->c; Node* pTmp=pTop; pTop=pTop->pNext; delete pTmp; return c; } } }; bool isMatch(char* str) { CharStack stack; char *p=str; char popchar; while(*p!='\0') { switch(*p) { case '(': case '[': case '{': case '<': stack.push(*p); break; case ')': { popchar=stack.pop(); if (popchar!='(') return false; } break; case ']': { popchar=stack.pop(); if (popchar!='[') return false; } break; case '}': { popchar=stack.pop(); if (popchar!='{') return false; } break; case '>': { popchar=stack.pop(); if (popchar!='<') return false; } break; default: break; } /* if(*p=='(') { stack.push(*p); } else if(*p==')') { char popchar=stack.pop(); if (popchar!='(') return false; } */ p++; } if(stack.pop()=='\0') return true; else { while(stack.pop()!='\0'); return false; } } int main(int argc, char* argv[]) { bool bans=isMatch(argv[1]); if(bans) { printf("Yes!\n"); } else { printf("No!\n"); } return 0; }
相关文章推荐
- 数据结构的应用——使用栈实现字符串括号匹配检查
- 所有括号匹配的字符串
- 判断一个括号字符串是否匹配正确,如果括号有多种,怎么做?如(([]))正确,[[(()错误。
- 哈理工 1170 语法检查-括号匹配【stack应用】【水题~】
- 数据结构实验之栈四:括号匹配+(字符串中空格的输入)
- 添加最少括号匹配给定括号字符串
- 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来。
- 嵌套优化版括号匹配检查
- 输入一串字符串,其中有普通的字符与括号组成(包括‘(’、‘)’、‘[’,']'),要求验证括号是否匹配,如果匹配则输出0、否则输出1.
- php判断字符串中前后括号是否匹配
- 面试编程题拾遗(05) --- 括号匹配检查
- 数据结构与算法学习之路:检查表达式的括号是否匹配——栈
- C实现Stack,并通过Stack来检查括号是否匹配
- 判断字符串中的括号是否匹配
- C程序括号匹配检查
- 不用栈检查小括号、中括号、大括号的匹配
- 字符串中圆括号的平衡和匹配检测
- 【C++】字符串中的括号是否匹配
- 看数据结构写代码(11)栈的应用(二) 括号匹配的检查
- PHP 判断字符串括号是否匹配