博客
关于我
数据结构 括号匹配
阅读量:295 次
发布时间:2019-03-03

本文共 1720 字,大约阅读时间需要 5 分钟。

括号匹配,栈的应用

#include 
#include
#define true 1#define false 0#define ok 1#define error 0#define overflow -2#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef int status;typedef struct { char *base; char *top; int stacksize;}sqstack;status initstack(sqstack &s) { //初始化stack; s.base = (char *)malloc(STACK_INIT_SIZE * sizeof(char)); if (!s.base) exit(overflow); s.top = s.base; s.stacksize = STACK_INIT_SIZE; return ok;}status push(sqstack &s, char e) { if (s.top - s.base >= s.stacksize) { s.base = (char *)realloc(s.base, (s.stacksize + STACKINCREMENT) * sizeof(char)); s.top = s.base + s.stacksize; s.stacksize += STACKINCREMENT; } *s.top++= e; return ok;}status pop(sqstack &s,char &e) { if (s.base == s.top) return error; e = *--s.top; return ok;}status stackempty(sqstack s) { if (s.base == s.top) return true; else return false;}status gettop(sqstack s, char &e) { if (s.top == s.base) return error; e = *(s.top - 1); return ok;}void judge(){ sqstack S; initstack(S); bool flag=true; char op, a, b; printf("请输入你要判断的这些括号(只能是“(、)、[、]”)\n"); op = getchar(); while (op != '\n'&& flag==true) { switch (op) { case '[': case '(':push(S, op); break; case ')':gettop(S, a); if (a == '(') pop(S,b); else flag = false; break; case ']':gettop(S, a); if (a == '[') pop(S,b); else flag = false; break; default: break; } op = getchar(); } if (stackempty(S)) flag = true; else flag = false; if (flag) printf("匹配正确!"); else printf("匹配错误!");}int main() { judge(); return 0;}

转载地址:http://cjpm.baihongyu.com/

你可能感兴趣的文章
ElasicJob分布式定时任务
查看>>
feign调用上传文件接口(MultipartFile)
查看>>
win锁屏界面用户名修改
查看>>
Java设计模式 —— 桥接模式(Bridge)
查看>>
计算机三级 信息安全技术历年真题(二)总共十套 3月底之前更完
查看>>
详解: 最小生成树
查看>>
PyCharm安装与配置
查看>>
Docker - 部署 Redis 6.0.8
查看>>
Android - Create dynamic lists with RecyclerView
查看>>
并发情况下三种线程/并发安全
查看>>
C#,asp.net,ashx处理session
查看>>
501 5.1.7 Invalid address
查看>>
foxmail 登录 exchange 2013 exchange 2016
查看>>
Netty高性能原理和框架架构解析
查看>>
Java基础之反射
查看>>
对象的创建、内存布局和访问定位
查看>>
FreeRTOS学习笔记(9)——内存管理
查看>>
CC2640R2F学习笔记(6)——UART串口使用
查看>>
SHELL命令
查看>>
自然划分的3-4-5规则
查看>>