21xrx.com
2025-03-28 20:48:17 Friday
文章检索 我的文章 写文章
C++括号匹配代码
2023-06-29 20:29:45 深夜i     14     0
C++ 括号匹配 代码

若想要检验一个算术表达式中的括号是否匹配,可以通过C++语言来实现这一功能。在C++中,可以使用栈(stack)这一数据结构来实现括号匹配。

首先,需要定义一个字符类型的栈,用来存储左括号。当遇到左括号时,将其压栈;当遇到右括号时,需要栈顶元素是否为对应的左括号。若是,则将栈顶元素弹出;若不是,则表达式有误。在遍历完整个表达式后,若栈为空,则说明括号匹配成功,否则则匹配失败。

下面是一个示例代码:

#include <iostream>
#include <stack>
using namespace std;
int main() {
  stack<char> brackets; // 定义一个栈
  string s = "((2+3)*4-1)/5";
  for (int i = 0; i < s.length(); i++) {
    char c = s[i];
    if (c == '(') {
      brackets.push(c); // 左括号入栈
    } else if (c == ')') {
      if (brackets.empty() || brackets.top() != '(') // 若栈为空或栈顶元素不是左括号 else {
        brackets.pop(); // 栈顶元素出栈
      }
    }
  }
  if (brackets.empty())
    cout << "括号匹配成功!" << endl;
   else
    cout << "括号匹配失败!" << endl;
  
  return 0;
}

这段代码使用了STL库中的栈(stack)数据结构来实现括号匹配。在遍历表达式字符串时,遇到左括号就将其入栈,遇到右括号就判断栈顶元素是否为左括号。若栈顶元素不为左括号,则匹配失败;否则将栈顶元素弹出。

当遍历完整个表达式后,再判断栈是否为空。若为空,则说明括号匹配成功;否则说明匹配失败。

通过这段代码,可以检验一个算术表达式中的括号是否匹配。若需要对括号匹配进行更多的优化,可以参考具体的算法实现。

  
  

评论区