利用c语言栈实现括号匹配_括号配对用栈实现c语言-程序员宅基地

技术标签: 括号匹配  啊哈  C语言    啊哈算法  

栈是一种只允许在栈顶增加和删除元素的数据结构。
利用栈实现括号匹配会非常简单,只需要设置一个栈,指向栈顶的top;利用top++或top–实现入栈和出栈。
实现匹配还需要条件判断,当出现右括号时候,就与栈顶元素比较。


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    //s字符串作栈,top为栈顶,a用来存储所要判断的字符串
    char s[101],a[101];
    gets(a);
    int len=strlen(a),i;
    int top=0;
    for(i=0;i<len;i++)
    {
        //判断是否是右括号,如果不是将字符入栈
        if(a[i]!= ‘)’ && a[i]!=’]’ && a[i]!=’}’)
        {
            s[++top]=a[i];
        }
        else
        {  
            //如果是右括号,与栈顶元素比较,匹配则出栈
            //判断是否是匹配,只需看top最后的值是否是0,为0则说明括号是匹配的
            switch(a[i])
            {
                case ‘)’:
                    if(s[top]’(’)
                    {
                        --top;
                        break;
                    }
                    else
                        break;                case ‘]’:
                    if(s[top]’[’)
                    {
                        --top;
                        break;
                    }                    else
                        break;                case ‘}’:
                    if(s[top]’{’)
                    {
                        --top;
                        break;
                    }                    else
                        break;
            }
        }
    }
    printf("%d\n",top);
    if(top0)
        printf(“YES!”);
    else
        printf(“NO!”);    return 0;
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42210410/article/details/96487346

智能推荐

idl结果显示窗口如何缩小_IDL入门教程二(上)(简单图形显示II)-程序员宅基地

文章浏览阅读141次。第二章简单的图形显示本章概述科学分析最基本的能力就是以简单的线画图、等值线图和曲面图来显示所研究的数据。在这一章中,将知道用这些方式来显示数据是多么容易。也将学会用系统变量和关键字来定位和标注简单的图形显示。将学会如下几点:1.如何用Plot命令将数据显示为线画图。2.如何用Surface和Shade_Surf命令将数据显示为曲面图。3.如何用Contour命令将数据显示为等值线图。4.如何在显示..._idl中画图时怎样让横坐标的讲变窄

Python 网络爬虫与数据采集(二)_python数据采集与网络爬虫报告-程序员宅基地

文章浏览阅读1.6k次,点赞9次,收藏46次。第二部分 初章 网络爬虫初识4. 网络爬虫请求篇_python数据采集与网络爬虫报告

相机的标定之手机相机的标定_相机标定的相机可以是手机吗-程序员宅基地

文章浏览阅读4.3k次,点赞3次,收藏26次。相机的标定是 SLAM 最开始的部分,由于设备原因,这个星期只做了手机相机的标定。这篇文章主要就是介绍一下相机标定的原理以及用OpenCV中现有的函数或是Matlab做相机标定的过程。_相机标定的相机可以是手机吗

android存储SharedPreferences后无法获取到数据_sharedpreferences得不到存储的值-程序员宅基地

文章浏览阅读1.6w次,点赞3次,收藏3次。个人在应用android SharePreferences时由于用法错误导致的无法获取到存储数据问题。在此记录,以作提醒_sharedpreferences得不到存储的值

JavaScript 常用的转义字符_js中空格的转义字符-程序员宅基地

文章浏览阅读3.7k次。常用的转义字符,需要写在字符串中\n:换行,newline\\:\ 斜杠\':'\":"\t:tab缩进\b:空格,blank_js中空格的转义字符

sox处理mp3_sox的常用方法-程序员宅基地

文章浏览阅读793次。sox是一个强大的音频处理工具,Debian的sox包里包含几个有用工具,play,rec,sox,soxi。play用于播放音频,可以播放一些常见格式的音频(mp3由于版权问题默认不支持)。最特别的地方是他可以播放原始音乐文件(raw),通过以下选项来控制播放参数:-r 抽样数,单位赫兹-c channels,通道数-b 每个抽样的比特数-e 指定音频文件的编码方式,可用的编码方式如下signe..._sox/play

随便推点

这42个Python小例子,太走心了 !-程序员宅基地

文章浏览阅读2.3k次。告别枯燥,60秒学会一个Python小例子。收录整理了42个例子一次性送给大家,希望对大家有所帮助!总有一款适合你~~一、基本操作1 链式比较i=3print(1<i&..._python实例

00.Scrum指南-程序员宅基地

文章浏览阅读247次。00.Scrum 指南的目的  Scrum是用于开发、交付和持续支持复杂产品的一个框架。本指南包括了Scrum的定义,其中包括Scrum的角色、事件、工件,以及把它们组织在一起的规则。Ken Schwaber和Jeff Sutherland创造了Scrum。01.Scrum的定义  Scrum:Scrum是一个框架,在此框架中人们可以解决复杂的自适应的难题,同时也能高校并创造性地..._在 sprint 中: a. 能做出有害于 sprint 目标的改变 b. 不能降低产品质量 c. 随着

天津大学计算机学院课表,天津大学软件实践1汇编语言课程教学大纲-天津大学计算机学院.PDF...-程序员宅基地

文章浏览阅读296次。天津大学软件实践1汇编语言课程教学大纲-天津大学计算机学院天津大学《软件实践 1(汇编语言)》课程教学大纲软件实践1(汇编课程编号: 2160276 课程名称:语言)学 时: 40 学 分: 2学时分配: 授课: 上机: 实验: ..._天津大学计算机课程表

Using CAR for Smurf Attack Mitigation,使用承诺速率控制预防smurf攻击-程序员宅基地

文章浏览阅读212次。【实验说明】配置路由器保护内部网络免受Smurf 攻击【smurf攻击】Smurf攻击以最初发动这种攻击的程序名“Smurf”来命名的。攻击的过程是这样的:Woodlly 攻击者向一个具有大量主机和因特网连接的网络的广播地址发送一个欺骗性Ping分组(echo 请求),这个目标网络被称为反弹站点,而欺骗性Ping分组的源..._attack mitigation using hmac

Android自定义进度条——圆角横向进度条_android 自定义圆角进度条-程序员宅基地

文章浏览阅读8.1k次,点赞5次,收藏14次。Android自定义进度条——圆角横向进度条1.本文将向你介绍自定义进度条的写法,比较简单,但还是有些知识点是需要注意的:invalidate()方法RectF方法的应用onMeasure方法的应用2.原理 画3层圆角矩形,底层为黑色,第二层为灰色,最上一层为进度条颜色,示例图如下: 3.效果图 实现圆角进度条还有很多其他方法,比如在Progress控件里填充圆角图片,通过拉伸图片_android 自定义圆角进度条

基于javaweb SSM邮件收发信息系统设计和实现以及文档_邮件收发系统的设计与实现ssm后端开发-程序员宅基地

文章浏览阅读1.1w次,点赞8次,收藏31次。基于javaweb SSM邮件收发信息系统(数据库+源码+论文)实现了对登录、注册、邮件收发消息和通讯录添加以及草稿箱和个人设置模块的代码编写和效果实现_邮件收发系统的设计与实现ssm后端开发