• 栈的应用之括号匹配


    #include <stdio.h>
    #include <string.h>
    
    #define MAXSIZE 110
    #define TRUE 1
    #define FALSE 0
    
    typedef char ElemType;
    typedef int Status;
    
    typedef struct
    {
      ElemType data[MAXSIZE];
      int top;
    }SeqStack;
    
    void InitStack(SeqStack *s)
    {
        (*s).top = 0;
    }
    
    Status StackEmpty(SeqStack s)
    {
        if(s.top==0) return 0;
        return 1;
    }
    
    void Push(SeqStack *s, char ch)
    {
        (*s).data[(*s).top]=ch;
        (*s).top++;
    }
    
    Status Pop(SeqStack *s, char ch)
    {
        if(!StackEmpty(*s)) return FALSE;
        (*s).top--;
        return TRUE;
    }
    
    int main()
    {
        char ch;
        int flag, k;
        SeqStack s;
        InitStack(&s);
    
        printf("请输入一个由[]、{}和()组成的字符串
    ");
        flag=k=1;
    
        while(scanf("%c", &ch), ch!='
    ')
        {
            if((s.data[s.top-1]=='['&&ch==']')&&s.top>=1)
           {
               k=Pop(&s, ch);
               if(!k) flag=0;
           }
           else if(s.data[s.top-1]=='('&&ch==')' &&s.top>=1)
           {
               k=Pop(&s, ch);
               if(!k) flag=0;
           }
           else if(s.data[s.top-1]=='{'&&ch=='}' &&s.top>=1)
           {
               k=Pop(&s, ch);
               if(!k) flag=0;
           }
           else
           {
               Push(&s, ch);
           }
        }
    
       if(StackEmpty(s)) flag=0;
        if(flag) printf("该字符串括号完全匹配.
    ");
        else printf("该字符串括号不完全匹配.
    ");
    
        return 0;
    }
  • 相关阅读:
    各种模板
    HNOI2019总结
    WC2019游记
    THUSC2017 Day1题解
    NOIP2018联赛总结
    LOJ2557. 「CTSC2018」组合数问题
    NOI2018游记
    bzoj4671: 异或图
    sg函数小结
    [NOI2011]Noi嘉年华
  • 原文地址:https://www.cnblogs.com/daydayupacm/p/5982151.html
Copyright © 2020-2023  润新知