zoukankan      html  css  js  c++  java
  • 栈的应用之括号匹配

    #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;
    }
  • 相关阅读:
    有点难度的二分
    请教神牛_字符串hash
    引水进城
    dp的斜率优化
    关于学习oi的一些事项
    永续债
    消费税
    增值税
    BSC交流
    钉钉吐槽功能点
  • 原文地址:https://www.cnblogs.com/daydayupacm/p/5982151.html
Copyright © 2011-2022 走看看