1. 程式人生 > >C/C++ 泛型程式設計stack(括號匹配)

C/C++ 泛型程式設計stack(括號匹配)

題目描述

假設表示式中包含一種括號:圓括號,其巢狀順序隨意,即(()())或(())等為正確的格式,)(或((())或())均為不正確的格式。檢驗括號是否匹配可以用堆疊來實現當遇到 ( 時進棧,遇到 ) 時出棧進行匹配檢驗,如果出現不匹配的情況立即結束,否則繼續取下一個字元。如果沒有遇到不匹配的情況,最後判斷棧是否為空,棧為空,括號匹配,否則不匹配。

輸入

包括多組資料。每組1行,為包含括號的表示式。

輸出

如果是正確的格式,輸出“Yes”,否則輸出“No”

樣例輸入

(()())
(())
(()
())
(
)

樣例輸出

Yes
Yes
No
No
No
No
#include <iostream>
#include <stack>
 
using namespace std;
int main()
{
    char a[100];
    int i;
    while(cin>>a)
    {
        stack<char> b;
        for(i = 0;a[i];i++)
        {
            if(a[i] == '(')
                {
                    b.push(a[i]);
                    continue;
                }
            if(a[i]==')'&& b.size()!=0)
                {
                    b.pop();
                    continue;
                }
            else
            {
                b.push(a[i]);break;
            }
        }
        if(b.empty()==true)
            cout <<"Yes\n";
        else
            cout <<"No\n";
    }
 
    return 0;
}