括号匹配算法

1|0算法思想

/* 括号匹配算法 扫描字符串,遇到左括号 入栈,遇到右括号 出栈顶元素 */

2|0数据结构 定义存字符串的栈

#include <stdio.h> #include <string.h> #define Maxsize 10 typedef struct { char str[Maxsize]; int top; }Stack; void InitStack(Stack &S) { S.top = -1; // 栈空 } bool isEmpty(Stack S) { return S.top == -1; } bool Push(Stack &S, char &x) { if(S.top >= Maxsize -1) { return false; // 栈满 } S.str[++S.top] = x; return true; } bool Pop(Stack &S, char &x) { if(S.top == -1) { return false; } x = S.str[S.top--]; return true; }

3|0核心算法

bool bracketCheck(char str[], int len) { Stack S; InitStack(S); for(int i=0; i<len; i++) // 扫描 { if(str[i]=='(' || str[i]=='[' || str[i]=='{') { Push(S, str[i]); // 左括号入栈 } else { if(S.top == -1) { return false; } char c; Pop(S, c); if(str[i]==')' && c!='(') { return false; } if(str[i]==']' && c!='[') { return false; } if(str[i]=='}' && c!='{') { return false; } } } return isEmpty(S); } int main() { char str[Maxsize]; puts("Please input a str:"); scanf("%s", &str); printf("The %s is matching ?: %d", str, bracketCheck(str, strlen(str))); return 0; }

4|0测试

image


__EOF__

本文作者HUGBOY
本文链接https://www.cnblogs.com/hugboy/p/16329980.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   HUGBOY  阅读(70)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示