栈机制应用——括号匹配[()]
描述:任意输入一组括号,判断括号是否匹配
示例:[()] {{()} ([]) [()()]
运用:栈机制
描述:任意输入一组括号,判断括号是否匹配
示例:[()] {{()} ([]) [()()]
运用:栈机制
//界面与界面的实现参考:
栈的实现代码:http://blog.csdn.net/qq_35244529/article/details/52399211
//应用
<span style="font-size:14px;">#include<iostream>
#include<string.h>
#include"MyStack.h"//见上面连接
using namespace std;
//------------------
#include"Coordinate.h"
//------------------
int main(){
MyStack<char> *p = new MyStack<char>(40);//被匹配的字符指针
MyStack<char> *q = new MyStack<char>(40);//下面c_str所需的栈空间指针
char str[] = "[[()()]]";//英文字符
char c_str = 0;//急需匹配的字符
for(int i = 0; i < strlen(str); i++){
if(str[i] != c_str){
p->push(str[i]);//被匹配字符入栈
switch(str[i]){
case '[':
if(c_str != 0){
q->push(c_str);//c_str入栈
}
c_str = ']';
break;
case '(':
if(c_str != 0){
q->push(c_str);//c_str入栈
}
c_str = ')';
break;
default:
cout << "字符串不匹配" << endl;
system("pause");
return 0;
}
}
else{
char e;
p->pop(e);
if(!q->pop(c_str)){//判空
c_str = 0;
}
}
}
if(p->stackEmpty()){//判空,为空时,匹配结束,不为空时,剩余需匹配的字符,括号不匹配
cout << "字符串匹配" << endl;
}
else{
cout << "字符串不匹配" << endl;
}
delete p;//释放内存空间
delete q;
q = NULL;
p = NULL;
}</span>
//控制台输出:
字符串匹配