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;
    }
  • 相关阅读:
    0x05 排序
    bzoj3032: 七夕祭
    0x04 二分
    bzoj2783: [JLOI2012]树
    bzoj3192: [JLOI2013]删除物品
    bzj1106: [POI2007]立方体大作战tet
    POJ2299Ultra-QuickSort
    POJ3080Blue Jeans
    POJ3253Babelfish
    POJ1611The Suspects
  • 原文地址:https://www.cnblogs.com/daydayupacm/p/5982151.html
Copyright © 2011-2022 走看看