当前位置: 首页 > article >正文

[数据结构]栈问题之括号匹配

bool isValid(char* s)
{
       ST st;
       StackInit(&st);
       while (*s)
       {
              if (*s == '(' || *s == '[' || *s == '{')//遇到左括号就入栈
              {
                      STPush(&st,*s);
                      s++;
              }
              else//遇到右括号,出栈进行匹配
              {
                      if (STEmpty(&st))//如果有括号数目比左括号多
                      {
                             StackDestroy(&st);
                             return false;
                      }
                      char top = STTop(&st);
                      STPop(&st);
                      if( (*s == ')' && top != '(')|| (*s == ']' && top != '[')|| (*s  == '}' && top != '{'))//匹配就继续走,如果一个不匹配就直接false
                      {
                             StackDestroy(&st);
                             return false;
                      }
                      else
                      {
                             s++;
                      }
              }
       }
       bool ret = STEmpty(&st);//如果栈为空才是匹配的,栈不为空那证明左括号多于右括号
       StackDestroy(&st);
       return true;
}

代码中遇到的函数具体实现请看作者之前的文章[数据结构]栈详解有讲过


http://www.kler.cn/a/563830.html

相关文章:

  • Ubuntu配置ROS2环境 使用串口通信
  • SSL和CA什么关系?
  • centos22.04 dpkg -l 输出状态标识含义
  • DMA 定制固件教程:小白跟做即得单人固件,超详细纯喂饭教程,100% 成功秘籍!FPGA仿真1:1、中断逻辑和TLP核心都在。
  • 获取 ubuntu 系统相关信息
  • VSCODE添加c/c++头文件路径
  • NL2SQL的应用-长上下文模型在处理NL2SQL任务时,相较于传统模型,有哪些显著的优势
  • 2025年【安全员-C证】考试总结及安全员-C证模拟考试
  • [SWPUCTF 2022 新生赛]ez_rce
  • 京准电钟:NTP精密时钟服务器在自动化系统中的作用
  • 模型思维 - 领域模型的应用与解析
  • vue项目中动态添加类名样式不生效问题
  • django model.object.filter 不等于多个值
  • Redis7——基础篇(八)
  • 如何免费使用稳定的deepseek
  • 通义灵码2.0 AI 程序员体验:优化与问题解决的全过程
  • 千峰React:案例一
  • 【QT 一 | 信号和槽】
  • 技术分享:MyBatis 动态 SQL 的应用 <choose>, <when>, <otherwise>
  • 如何用python将pdf转为text并提取其中的图片