数据结构(C语言) 栈的应用之括号匹配

Posted wumingoo1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构(C语言) 栈的应用之括号匹配相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
#include<stdlib.h>
typedef struct SqStack 
    char str[100];
    int top;
SqStack;
void Push(SqStack* S, char c) 
    S->top++;
    S->str[S->top] = c;

void Pop(SqStack* S, char* c) 
    *c = S->str[S->top];
    S->top--;

int Empty(SqStack* S) 
    return S->top == -1;

void Init(SqStack* S) 
    S->top = -1;

char LeftBracket(char right) 
    if (right == ))
        return (;
    else if (right == ])
        return [;
    else if (right == )
        return ;
    return 0;

int BracketsCheck(char* str) 
    SqStack S;
    Init(&S);
    int i = 0;
    while (str[i] != \0) 
        switch (str[i]) 
        case (:
        case [:
        case :
            Push(&S, str[i]);
            i++;
            break;
        case ):
        case ]:
        case :
            if (!Empty(&S)) 
                char c;
                Pop(&S, &c);
                if (c == LeftBracket(str[i]))
                    i++;
                else
                    return 0;
            
            else
                return 0;
            break;
        default:
            i++;
        
    
    return Empty(&S);


void main() 
    char* str = "[1+2*(5-2)]*4*2+6";
    int pass = BracketsCheck(str);
    if (pass) 
        printf("括号匹配!\n");
    
    else 
        printf("括号不匹配!\n");
    
    getchar();

 

以上是关于数据结构(C语言) 栈的应用之括号匹配的主要内容,如果未能解决你的问题,请参考以下文章

栈的应用之括号匹配的检验

数据结构 栈的实例应用,括号匹配

(王道408考研数据结构)第三章栈和队列-第三节1:栈的应用之括号匹配问题和表达式问题(前缀中缀和后缀)

C/C++语言数据结构快速入门(代码解析+内容解析)栈的应用

数据结构-栈的使用之括号匹配校验

数据结构-栈的使用之括号匹配校验