下面的程序使用stack实现了括号匹配的检验:

#include<iostream>
#include<stack>
#include<string.h>
using namespace std;
#define N 1000
char str[N];
int main(){
    cin>>str;
    int len=strlen(str);
    stack<char> st;
    int i;
    int t=0;
    for(i=0;i<len;++i){
        if(str[i]=='('||str[i]=='[')
            st.push(str[i]);
        else{
            if(str[i]==')'){
                if(st.top()!='('){
                    t=1;
                    break;
                }
                st.pop();
            }
            if(str[i]==']'){
                if(st.top()!='['){
                    t=1;
                    break;
                }
                st.pop();
            }
        }
    }
    if(t==1||!st.empty())
        cout<<"不匹配"<<endl;
    else
        cout<<"匹配"<<endl;
    return 0;
}