当前位置: 首页 > news >正文

数据结构_栈在括号匹配中的应用_代码

学习笔记 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>#define MaxSize 10
typedef struct{char data[MaxSize];int top;
}SqStack;//初始化栈
void InitStack(SqStack &S){S.top = 0;
} //判断栈是否为空
bool StackEmpty(SqStack S){if (S.top == 0) return true;return false;
} //新元素入栈
bool Push(SqStack &S,char x){if (S.top > MaxSize) return false;S.data[S.top] = x;printf("此时入栈的为: %c\n",x); S.top++;return true;
} //栈顶元素出栈
bool Pop(SqStack &S,char &x) {if (S.top == 0) return false;x = S.data[S.top-1];printf("此时出栈的为: %c\n",x); S.top--;return true;
}bool bracketCheck(char str[],int length){SqStack S;InitStack(S);for(int i=0;i<length;i++){if(str[i] == '(' || str[i] == '[' || str[i] == '{'){Push(S,str[i]);}else{if(StackEmpty(S)) return false;char topelem;Pop(S,topelem);if(str[i] == ')' && topelem != '(') {printf("匹配失败!\n");return false;}if(str[i] == ']' && topelem != '[') {printf("匹配失败!\n");return false;}if(str[i] == '}' && topelem != '{') {printf("匹配失败!\n");return false;}printf("这一对括号为:%c %c\n",topelem,str[i]);}}return StackEmpty;
}int main(){char str[] = "{[([])]}";int length = strlen(str);bracketCheck(str,length);return 0;
}

相关文章:

  • 使用位掩码的权限设计
  • 前端实现打印功能
  • Nginx(负载均衡,反向代理)
  • [实用技巧]Unity中,Sprite和SpriteRenderer的实用小贴士
  • 汽车标定技术(二十一)--英飞凌TC3xx的OLDA怎么玩?(2)
  • Python 造数据神器Faker
  • 如何在window中快速建立多个文件夹?
  • Java技术精粹:高级面试问题与解答指南(二)
  • Python中动态调用C#的dll动态链接库中方法
  • node环境问题(无法加载文件D:\Software\Node.js\node_global\vue.ps1,因为在此系统上禁止运行脚本。)
  • 必应bing国内广告开户首充和开户费是多少?
  • 来盘点我的校园生活(4)
  • 计划跳槽需要做哪些准备?
  • Spring Boot 实现 RabbitMQ 监听消息的几种方式
  • 系统架构师考试(十)
  • [译] 怎样写一个基础的编译器
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【面试系列】之二:关于js原型
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 2017 年终总结 —— 在路上
  • Cumulo 的 ClojureScript 模块已经成型
  • LintCode 31. partitionArray 数组划分
  • Spring Boot MyBatis配置多种数据库
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • vagrant 添加本地 box 安装 laravel homestead
  • 记录:CentOS7.2配置LNMP环境记录
  • 聊聊flink的TableFactory
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 你真的知道 == 和 equals 的区别吗?
  • 前端技术周刊 2019-02-11 Serverless
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 事件委托的小应用
  • 译有关态射的一切
  • #define、const、typedef的差别
  • #window11设置系统变量#
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (1)svelte 教程:hello world
  • (LeetCode) T14. Longest Common Prefix
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (PySpark)RDD实验实战——取一个数组的中间值
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (九)c52学习之旅-定时器
  • (新)网络工程师考点串讲与真题详解
  • (一)基于IDEA的JAVA基础12
  • (原)Matlab的svmtrain和svmclassify
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .net core docker部署教程和细节问题
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET Core 发展历程和版本迭代
  • .NET_WebForm_layui控件使用及与webform联合使用