表达式括弧匹配的检测

【问题描述】

利用栈的基本操作,完成表达式括弧匹配的检测。(假设表达式中只有()、[]、{}三类括弧)

【输入形式】

输入若干个表达式(字符串形式)。(提示:使用scanf("%s",a)==1)

【输出形式】

若表达式括弧匹配,则输出“match”;否则输出"not match"

【样例输入】

1*(3+4)/4

((3+4)*7-(8-9)

((1+2)*(3_4)-(5+6)*3)

{[}]()

【样例输出】

match

not match

match

not match

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define ERROR 0
#define OK 1
#define STACK_INT_SIZE 10
#define STACKINCREMENT 5
typedef  char ElemType;
typedef struct
{
    ElemType *base;
    ElemType *top;
    int stacksize;
} SqStack;

int initStack(SqStack *s);
int emptyStack(SqStack *s);
int pushStack(SqStack *s, ElemType e);
int popStack(SqStack *s,ElemType *e);
//初始化
int initStack(SqStack *s)
{
    s->base=(ElemType*)malloc(STACK_INT_SIZE*sizeof(ElemType));
    if(!s->base)
        return 0;
    s->top=s->base;
    s->stacksize=STACK_INT_SIZE;
    return 1;
}
//判断栈空
int emptyStack(SqStack *s)
{
    if(s->top==s->base)
        return 1;
    else
        return 0;

}
//入栈
int pushStack(SqStack *s, ElemType e)
{
    if(s->top-s->base>=s->stacksize)
    {
        s->base=(ElemType*)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(ElemType));
        if(!s->base)
            return 0;
    s->top=s->base+s->stacksize;
    s->stacksize+=STACKINCREMENT;
    }
    *s->top++=e;
    return 1;

}
//出栈
int popStack(SqStack *s,ElemType *e)
{
    if(s->top==s->base)
        return 0;
    --s->top;
    *e=*s->top;
    return 1;

}
//判断表达式括弧匹配
int isMatching(char a[])
{
     int i=0;
     SqStack s;
     initStack(&s);
     while(a[i]!='\0')
     {
         if(a[i]=='('||a[i]=='['||a[i]=='{')
                pushStack(&s,a[i]);
         else if(a[i]==')'&&*(s.top-1)=='(')
         {
             popStack(&s,&a[i]);
         }

else if(a[i]==']'&&*(s.top-1)=='[')
         {
             popStack(&s,&a[i]);
         }

else if(a[i]=='}'&&*(s.top-1)=='{')
            {
                popStack(&s,&a[i]);
            }

else if(a[i]==')'||a[i]==']'||a[i]=='}')
            return 0;
         i++;
     }
     return emptyStack(&s);
}
int main()
{
    char a[1000];
    //循环读取若干表达式,并输出判断结果
    while(scanf("%s",a)==1)
    {
        if(isMatching(a))
            printf("match\n");
        else
            printf("not match\n");
    }

return 0;
}

表达式括弧匹配的检测【问题描述】利用栈的基本操作,完成表达式括弧匹配的检测。(假设表达式中只有()、[]、{}三类括弧)【输入形式】输入若干个表达式(字符串形式)。(提示:使用scanf相关推荐

  1. 利用栈的基本操作,将一个十进制数转换成8进制数

    题目 利用栈的基本操作,将一个十进制数转换成8进制数 #include<iostream>using namespace std;#define MAXSIZE 100 typedef i ...

  2. 利用栈进行数制转换和括号匹配(C语言)

    数制转换:将十进制数转换为任意进制数.由数制转换的计算公式 N = (N / d) × d + N % d (其中N为想转换的十进制数,d为想转换的进制) 我们可以知道其转换后的结果是逆序输出,故可以 ...

  3. 利用栈的基本操作,将十进制数转换为八进制数

    #include <stdio.h> #include <stdlib.h> #include <malloc.h> #define STACKSIZE 100 t ...

  4. 栈的应用-判断表达式中括弧是否匹配(()、[]、{}三类括弧)

    [问题描述] 利用栈的基本操作,完成表达式括弧匹配的检测.(假设表达式中只有().[].{}三类括弧) [输入形式] 输入若干个表达式(字符串形式).(提示:使用scanf("%s" ...

  5. Harris角点检测+sift描述匹配

    最近用到:Harris检测图像中边缘处的特征点,并且需要两张图特征点匹配起来.Harris只是一个角点检测的算法,最终只得到特征点坐标,想要匹配需要描述,而Harris是单尺度的,自己写描述函数又有些 ...

  6. 括弧匹配检验:比较基础的栈

    括弧匹配检验: 题目描述 假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[([ ][ ])]等为正确的匹配,[( ])或([ ]( )或 ( ( ) ) )均为错误 ...

  7. 记录一下HALCON基于可变形,利用CAD画dxf模板进行模板匹配(二)

    本文接着上一篇记录一下HALCON基于可变形,利用CAD画dxf模板进行模板匹配 打开HALCON并打开匹配助手 匹配助手如图 "创建"页说明: 1,选择匹配方式 中间偏上方的下拉 ...

  8. 【特征匹配】BRIEF特征描述子原理及源码解析

    相关:Fast原理及源码解析 Harris原理及源码解析 SIFT原理及源码解析 SURF原理及源码解析 转载请注明出处: http://blog.csdn.net/luoshixian099/art ...

  9. 图像兴趣点检测与描述 的深度学习方法总结

    图像的兴趣点(关键点.特征点)检测和描述往往是图像配准.相机标定.场景识别.目标跟踪的首要步骤,是计算机视觉研究的重要课题.检测子的目的是为了提取可匹配的兴趣点,而描述子可用于匹配或识别,为下游任务作 ...

最新文章

  1. jquery判断方法是否存在_判断图中是否有环的三种方法
  2. 如何在 Linux 上永久挂载一个 Windows 共享
  3. r语言和python-r语言和python学哪个?
  4. 关于产品 / 市场契合点 PMF 的 12 个问题全解读(下)
  5. 你想带一顶什么样的硕士帽(转载)
  6. Python使用matplotlib设置pandas绘制的饼状图扇形标签
  7. xp也可以将U盘格为NTFS
  8. 从公司买火车票到代理模式和适配器模式
  9. 手模手教你装 文能黑苹果,武可3A游戏大作的2400块主机
  10. 第十章 VLAN间路由
  11. android Error obtaining UI hierarchy
  12. 用tensorboard可视化log日志
  13. OpenCV开发笔记(四十七):红胖子8分钟带你深入了解直方图(图文并茂+浅显易懂+程序源码)
  14. 当前佛教界的乱相之一就是以凡滥圣、惑乱人心
  15. wemos学习之串口通信和ESP8266wifi模块的调用
  16. 使用js拖拽盒子移动()
  17. 西瓜播放器xgplayer设置自动播放
  18. 【C语言】基础练习题
  19. 中国羊奶皂市场趋势报告、技术动态创新及市场预测
  20. 服务器 系统打补丁,2019服务器系统打补丁方法

热门文章

  1. RK3399平台入门到精通系列讲解(导读篇)21天学习挑战介绍
  2. SpringBoot小彩蛋,自定义项目启动时图案
  3. 数据结构与算法 —— 图 (Graph)的基本介绍
  4. Word控件Spire.Doc 【列表】教程:在 Word 文档中插入列表
  5. 华测RTK X10的使用和数据的导出
  6. 照片无损放大的软件叫什么?这四个软件让你实现无损放大操作
  7. 2020 年 “联想杯”全国高校程序设计在线邀请赛暨第三届上海理工大学程序设计竞赛 部分题解
  8. 以智慧诠释城市新生活
  9. XJTU第十四周大计基编程作业
  10. 工商银行莆田分行项目分享 触摸屏软件