📌  相关文章
📜  使用堆栈检查表达式(格式良好)中的平衡括号的 C++ 程序(1)

📅  最后修改于: 2023-12-03 15:22:23.416000             🧑  作者: Mango

使用堆栈检查表达式中的平衡括号的 C++ 程序

在编写程序时,经常需要检查表达式中括号是否成对出现。为此,我们可以使用堆栈来实现检查。下面是一个用C++编写的,使用堆栈检查表达式中平衡括号的程序。

代码实现
#include <iostream>
#include <stack>
#include <string>

using namespace std;

bool balanced(string exp) {
    stack<char> s;

    for (int i = 0; i < exp.length(); i++) {
        char c = exp[i];
        if (c == '(' || c == '[' || c == '{') {
            s.push(c);
        } else if (c == ')' || c == ']' || c == '}') {
            if (s.empty()) {
                return false;
            }
            char top = s.top();
            s.pop();
            if (c == ')' && top != '(') {
                return false;
            } else if (c == ']' && top != '[') {
                return false;
            } else if (c == '}' && top != '{') {
                return false;
            }
        }
    }

    return s.empty();
}

int main() {
    string exp = "([]{})";
    if (balanced(exp)) {
        cout << "Balanced" << endl;
    } else {
        cout << "Not balanced" << endl;
    }

    return 0;
}
代码说明

这个程序首先定义了一个balanced函数用于检查表达式中的括号是否平衡。该函数使用了一个stack来保存左括号,并按照顺序在遇到右括号时弹出左括号。如果最后栈为空,则表达式中的括号是平衡的。

main函数中,定义了一个表达式exp,并使用balanced函数来检查它是否平衡。

其他说明

在本程序中,我们可以看到用到了stack的相关知识,同时也用到了字符串的一些操作。这个程序可以作为一个简单的堆栈练习程序,也可以在实际工作中使用来检查表达式中的括号是否平衡。