1. 程式人生 > >第6周專案3 括號的匹配

第6周專案3 括號的匹配

問題描述:

/*
Copyright (c)2015,煙臺大學計算機與控制工程學院
All rights reserved.
檔名稱:專案3.cbp
作    者:張芸嘉
完成日期:2015年10月23日
版 本 號:v1.0


問題描述:假設表示式中允許三種括號:圓括號、方括號和大括號。編寫一個演算法,判斷表示式中的各種左括號是否與右括號匹配。 
          例如,輸入2+(3+4)*[2+{[3]}]-8,輸出匹配正確;輸入2+(3+4*[2)+{[3]}-8,輸出匹配錯誤。
輸入描述:輸入表示式
程式輸出:輸出判斷結果
*/

程式碼:

main函式程式碼

#include "sqstack.h"

bool isMatch(char *st)
{
    int d=1, i;
    char c;
    SqStack *s;
    InitStack(s);
    for(i=0; st[i]!='\0'&&d; i++)
    {
        switch(st[i])
        {
        case'(':
        case'[':
        case'{':
            Push(s, st[i]);
            break;
        case')':
            Pop(s, c);
            if(c!='(') d=0;
            break;
        case']':
            Pop(s, c);
            if(c!='[') d=0;
            break;
        case'}':
            Pop(s,c);
            if(c!='{') d=0;
            break;
        }
    }
    if(StackEmpty(s)&&d==1)
        return true;
    else
        return false;
}

int main()
{

    char st[50];
    printf("請輸入表示式:");
    scanf("%s", st);
    if(isMatch(st))
        printf("配對正確!!\n");
    else
        printf("配對錯誤!!\n");
    return 0;
}


執行結果:

輸入2+(3+4)*[2+{[3]}]-8時、

輸入2+(3+4*[2)+{[3]}-8時

知識點總結:

       利用棧解決具體應用問題。