C语言解决括号匹配问题

发布时间:2022-12-17 11:00

前言

在我自己学习的过程中,难免会遇到许多复杂的算法问题。解决问题的一个好方法就是查找资料、参考别人的逻辑思维。而有一些问题是查找不到的,也可能是文章写的太乱、太难、太复杂。在这里我分享一下我个人的看法以及思路。

案例分析

在我们打代码的过程中,会经常使用到括号,如果我们使用的代码不得当,那么编译器就会报错。当然了就我的水平而言不可能把编译器的机制搬到这里来。

比如说,我们输入了{[]}()这串括号组,很明显,这是一个正确的括号组。

再比如说,我们输入了{[}]这串括号组,显然,这是一个错误的括号组。

那么如何通过程序来实现这个判断是否合法的功能呢?

其中一个原理叫做——栈。

先举一个例子。

C语言解决括号匹配问题_第1张图片

我们把所有左括号通过循环放入栈中。遇到右括号,与栈顶进行匹配。

成功一对从栈中拿走一个元素。

C语言解决括号匹配问题_第2张图片

通过top--的操作指向栈的下一个元素。

上面这个例子是一次性把所有左括号放入栈中。

那我们碰到这样一个例子呢?

C语言解决括号匹配问题_第3张图片

 当我们要把元素存入栈时,突然碰到右括号,我们也可以这样执行这个操作。

代码实现

#include 
#include 
int main()
{
    char arr[100];
    char s[100];
    gets(arr);
    int len=0;
    int top=-1; 
    len=strlen(arr);
    for(int i=0;i

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号