21xrx.com
2024-11-22 10:06:12 Friday
登录
文章检索 我的文章 写文章
C++括号匹配代码
2023-06-29 20:29:45 深夜i     --     --
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)数据结构来实现括号匹配。在遍历表达式字符串时,遇到左括号就将其入栈,遇到右括号就判断栈顶元素是否为左括号。若栈顶元素不为左括号,则匹配失败;否则将栈顶元素弹出。

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

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

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复