zoukankan      html  css  js  c++  java
  • 括号匹配[栈]

    题目:求字符串[(())]的括号是否匹配,这个题相对比较简易,也记录一下。
    思路,左括号就入栈,遇到右括号就出栈一个元素进行匹配判定,构造一个switch。同时,设置一个监视flag,初始置1,一旦不匹配就将之置为0,也就是以后就不用再比较了。

    #include <iostream>
    using namespace std;
    #define maxsize 10
    typedef struct stack
    {
        char a[maxsize];
        int top;
    }stack,*Stack;
    
    void push(Stack &s,char ch)/*入栈*/
    {
        s->a[++s->top]=ch;
    }
    char pop(Stack &s)/*出栈*/
    {
        char x=s->a[s->top--];    
        return x;
    }
    
    int main()
    {
        int i=0,flag=1;
        char x;    
        char *string="[(((())))]";
        Stack s=(Stack)malloc(sizeof(stack));
        s->top=-1;
        while(string[i]!='')
        {
            switch(string[i])/*左括号入栈,右括号出栈*/
            {
                case '(':
                push(s,'(');
                break;
                case '[':
                push(s,'[');
                break;
                case ')':           
                if((x=pop(s))!='(')/*出栈后进行匹配判定*/
                flag=0;
                break;
                case ']':
                if((x=pop(s))!='[')
                flag=0;
                break;
            }
            i++;
            if(!flag)/*只要一个不匹配就退出循环*/
            break;
        };             
        if(flag)
            printf("mattch");
        else 
            printf("no mattch");    
           return 0;       
    }
  • 相关阅读:
    Gym
    Gym
    Gym
    Gym
    Gym
    hdu2586 LCA带边权的Targan算法
    bryce1010专题训练——LCA
    POJ1470 LCA (Targan离线)
    bryce1010专题训练——LCT&&树链剖分
    模板——2.7 欧拉函数
  • 原文地址:https://www.cnblogs.com/tinaluo/p/5297112.html
Copyright © 2011-2022 走看看