美文网首页
栈的应用

栈的应用

作者: qianranow | 来源:发表于2021-03-30 08:11 被阅读0次

#include <stdio.h>

#define MaxSize 10

typedef struct {
    char data[MaxSize];
    int top;
} SqStack;

void InitStack(SqStack *s) {
    s->top = -1;
}

int Push(SqStack *s, char e) {
    if (s->top == MaxSize - 1) return -1;
    s->data[++s->top] = e;
    return 1;
}

int Pop(SqStack *s, char *e) {
    if (s->top == -1) return -1;
    *e = s->data[s->top--];
    return 1;
}

int Empty(SqStack s) {
    return s.top == -1;
}

int bracketCheck(char str[], int length) {
    SqStack s;
    InitStack(&s);
    for (int i = 0; i < length; i++) {
        if (str[i] == '(' || str[i] == '[' || str[i] == '{') {
            Push(&s, str[i]);
        } else {
            if (Empty(s)) return -1;
            char topElem;
            Pop(&s, &topElem);
            if (str[i] == ')' && topElem != '(') return -1;
            if (str[i] == ']' && topElem != '[') return -1;
            if (str[i] == '}' && topElem != '{') return -1;
        }
    }
    return Empty(s);
}

int main() {
    char str[] = "{(())[]}";
    printf("%i\n", bracketCheck(str, 8));
    return 0;
}

相关文章

  • 1)栈是什么?2)栈的特点?3)栈的基本操作有哪些?4)栈已被应用的经典场景有哪些?栈的应用场景? 一、栈是什么?...

  • 栈与栈的应用

    一、阅读源码,得知,stack类继承自Vector,而Vector相当于线程安全的arraylist(相反的arr...

  • 栈的应用

    动态数组的子集 栈的应用undo.png leetcode括号匹配:

  • 栈的应用

    中缀表达式转换为后缀表达式 后缀表达式 做数学运算时,经常使用的是中缀表达式,即“操作数 运算符 操作数”。在计算...

  • 栈的应用

    1.括号匹配 算法思路:从第一个字符扫描遇到普通字符忽略,遇到左符号压入栈中,继续扫描,遇到右符号时从栈中弹出进...

  • 栈的应用

    回顾数组 特点:数组是一种常见线性结构,用于储存数据,并且可以在数组任意位置插入和删除元素 认识栈结构(Stack...

  • 栈的应用

    1051 Pop Sequence

  • 栈的应用

    栈的应用 栈是一种先进后出的数据结构,这个我相信大家很好理解。那下面我就通过两个栈的实际应用来帮助大家更好的理解栈...

  • 栈的应用

    进制转换 关于进制转化问题,可以利用栈的先进后出选择很方便的实现,以二进制为例,将一个十进制数8转化为二进制的,实...

  • 栈的应用

网友评论

      本文标题:栈的应用

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