C语言解决堆栈括号匹配问题示例详解

Agatha ·
更新时间:2024-11-10
· 657 次阅读

目录

首先构建栈

调用匹配函数

代码调用

1.括号匹配问题就是当遇到{( [这些左括号的时 将括号字符入栈

2.当遇到右括号时判断栈顶元素是不是与左括号匹配如果匹配就出栈

如果不匹配就直接结束程序(即括号匹配失败)

首先构建栈 struct STACK { char num[10]; int top; }; struct STACK* creatstack() { struct STACK* stack = new struct STACK; assert(stack); stack->top = -1;//0 -1这些根据直接所习惯去标记栈顶 -1只是先置加 0后置加 return stack; } void push(struct STACK* stack, char ch) { stack->num[++stack->top] = ch; } void pop(struct STACK* stack) { stack->top--; } 调用匹配函数

 如果返回true即匹配成功 返回false即匹配失败

bool Match(struct STACK* stack, char* match) { int len = strlen(match); for (int i = 0; i < len; ++i) { if (match[i] == '{' || match[i] == '[' || match[i] == '(') { push(stack, match[i]); } if (match[i] == '}' ) { if (stack->num[stack->top] == '{') { pop(stack); } else { return false; } } if (match[i] == ')' ) { if (stack->num[stack->top] == '(') { pop(stack); } else { return false; } } if (match[i] == ']' ) { if (stack->num[stack->top] == '[') { pop(stack); } else { return false; } } } if (stack->top == -1) return true; else { return false; } } 代码调用

如果是输出1说明匹配成功 输出0匹配不成功

int main() { struct STACK* stack = creatstack(); char str[10] = "()[][]{}"; cout << Match(stack ,str)<< endl; }

以上就是C语言堆栈括号匹配问题示例详解的详细内容,更多关于C语言堆栈括号匹配的资料请关注软件开发网其它相关文章!



示例 括号 C语言 堆栈

需要 登录 后方可回复, 如果你还没有账号请 注册新账号