• 括号匹配[栈]


    题目:求字符串[(())]的括号是否匹配,这个题相对比较简易,也记录一下。
    思路,左括号就入栈,遇到右括号就出栈一个元素进行匹配判定,构造一个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;       
    }
  • 相关阅读:
    python模块win32com中的early-bind与lazy-bind(以Autocad为例)
    Beautiful code and beautiful life
    PyPI 使用的国内源
    JavaScript在SublimeText中的配置
    Python中的模块包
    FTP 服务器在WIN10上的搭建及服务端下载文件实例
    Oracle ASM磁盘组兼容性
    oracle ADVM
    053-28
    053-27
  • 原文地址:https://www.cnblogs.com/tinaluo/p/5297112.html
Copyright © 2020-2023  润新知