括号匹配(栈)
来源:互联网 发布:javascript 转为java 编辑:程序博客网 时间:2024/05/29 12:10
#include<stdio.h>#include<stdlib.h>#define OK 1#define ERROR 0#define NULL 0#define maxSize 100typedef struct { char *top; char *base; int size;}stack;int initStack(stack &s){ if(!(s.base=s.top=(char *)malloc(maxSize*sizeof(char)))) return ERROR; s.size=maxSize; return OK;}int push(stack &s,int e){ *s.top++=e; return OK;}int isEmpty(stack s){ return s.top==s.base?OK:ERROR;}char pop(stack &s,char &e){ if(isEmpty(s)) return ERROR; s.top--; e=*s.top; return e;}int match(){ stack s; initStack(s); char str[100],e,t; int flag=1,i=0,length; scanf("%c",&str[i]); while(str[i]!='\n') scanf("%c",&str[++i]); length=i-1; i=0; push(s,str[i]); if(str[i]=='}'||str[i]==']'||str[i]==')') flag=0; //the first element else while(i<length) { i++; if(str[i]==']') { t=pop(s,e); if(t!='[') { flag=0;break; } } else if(str[i]=='}') { t=pop(s,e); if(t!='{') { flag=0;break; } } else if(str[i]==')') { t=pop(s,e); if(t!='(') { flag=0;break; } } else push(s,str[i]); } if(!isEmpty(s)) flag=0; return flag;}int main(){ int result; printf("input bracket:\n"); result=match(); if(result) printf("match!\n"); else printf("not match!\n"); return 0;}
0 0
- 括号匹配(栈)
- 括号匹配(栈)
- 括号匹配(栈)
- 括号匹配(栈实现)
- 括号匹配(栈操作)
- 括号匹配(栈练习)
- 最长括号匹配(栈)
- 判括号匹配(顺序栈)
- 括号匹配(一) 栈的应用
- POJ1068--括号匹配(栈的应用)
- Parentheses Balance(括号匹配)--栈
- 括号匹配系列(栈的运用)
- SDUT 2134----括号匹配(栈)
- 括号匹配(基于链栈)
- 栈 || 括号匹配(基础版)
- 栈之 括号匹配(sdut oj2134)
- C实例---括号匹配(栈实现)
- 栈应用 一(括号匹配)
- [Keepalived] VRRP协议介绍
- Netty4.0学习笔记系列之四:混合使用coder和handler
- 在本地机器上搭建SVN服务器作版本备份
- IOS的AppDelegate方法中的事件触发调用
- ZeroMQ,史上最快的消息队列 —– ZMQ的学习和研究
- 括号匹配(栈)
- android工具类
- Struts2的类型转换及输入校验(自定义类型转换器)
- 与WebGL一起遇见网页的未来
- php去掉字符串的最后一个字符附substr()的用法
- textarea用resize控制输入框的宽度和高度
- Netty4.0学习笔记系列之五:自定义通讯协议
- zookeeper伪分布安装和使用(最详细最齐全)
- dismissViewController 实现多个模态VC跳转到根VC