括号的匹配

问题及代码:


问题描述:假设表达式中允许三种括号:圆括号、方括号和大括号。编写一个算法,判断表达式中的各种左括号是否与右括号匹配。  
输入描述:若干数据。 
程序输出:根据括号的配对情况输出配对正确或配对错误。 

链栈算法库


配对函数:

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

main函数:

#include"head.h"  
int main()  
{   
    char s[50];  
    printf("请输入表达式:");  
    scanf("%s", s);  
    if(peidui(s))  
        printf("配对正确!!\n");  
    else  
        printf("配对错误!!\n");  
    return 0;  
} 

运行结果:

正确的匹配结果:
括号的匹配_第1张图片
错误的匹配结果:
括号的匹配_第2张图片


知识点总结:

栈的应用。


学习心得:

对于代码中不会的地方要去抄,只有不会的时候才去抄,才能起到好的作用。

你可能感兴趣的:(个人练习)