美文网首页
数据结构中使用指针运算括号匹配问题

数据结构中使用指针运算括号匹配问题

作者: obidv | 来源:发表于2018-08-18 20:43 被阅读0次

    使用指针实现括号匹配问题:

    #include <stdio.h>
    #include <stdlib.h>
    //数据结构基础语法
    #define true 1
    #define false 0
    #define ok 1
    #define error 0
    #define infeasible -1
    #define overflow -2
    typedef int status;
    
    #define init_size 100
    #define increment 10
    typedef char selemtype;
    
    typedef struct {
        selemtype *base;
        selemtype *top;
        int stacksize;
    }sqstack;
    
    status initstack(sqstack &s) {//初始化stack;
        s.base = (selemtype *)malloc(init_size * sizeof(selemtype));
        if (!s.base) exit(overflow);
        s.top = s.base;
        s.stacksize = init_size;
        return ok;
    }
    
    status push(sqstack &s, selemtype e) {
        if (s.top - s.base >= s.stacksize) {
            s.base = (selemtype *)realloc(s.base, (s.stacksize + increment) * sizeof(selemtype));
            s.top = s.base + s.stacksize;
            s.stacksize += increment;
        }
        *s.top++= e;
        return ok;
    }
    status pop(sqstack &s,selemtype &e) {
        if (s.base == s.top) return error;
        e = *--s.top;
        return ok;
    }
    status stackempty(sqstack s) {
        if (s.base == s.top) return true;
        else return false;
    }
    status gettop(sqstack s, selemtype &e) {
        if (s.top == s.base) return error;
        e = *(s.top - 1);
        return ok;
    }
    int main() {
        sqstack kuo;
        initstack(kuo);
        bool flag=true;
        selemtype p, e, x;
        p = getchar();
        while (p != '\n'&& flag==true) {
            switch (p) {
            case '[':
            case '(':push(kuo, p); break;
            case ')':gettop(kuo, e); if (e == '(') pop(kuo,x);
                     else flag = false; break;
            case ']':gettop(kuo, e); if (e == '[') pop(kuo,x);
                     else flag = false; break;
            default: break;
            }
            p = getchar();
        }
        if (stackempty(kuo)) flag = true;
        else flag = false;
        if (flag) printf("true");
        else printf("false");
        return 0;
    }

    相关文章

      网友评论

          本文标题:数据结构中使用指针运算括号匹配问题

          本文链接:https://www.haomeiwen.com/subject/qpfqiftx.html