标准栈之括号匹配
来源:互联网 发布:c语言中char的范围 编辑:程序博客网 时间:2024/04/29 02:44
题目描述
输入
输出
示例输入
sin(20+10)
{[}]
示例输出
yes
no
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define sizenum 100
#define maxsize 100
typedef char element;
typedef struct
{
element *top;
element *base;
int stsize;
}sq;
int intistack(sq*l)
{
l->base=(element*)malloc(maxsize*sizeof(element));
if(!l->base)
return -1;
l->top=l->base;
l->stsize=maxsize;
return 0;
}
int empty(sq*l)
{
if(l->base==l->top)
return 1;
else return 0;
}
int push(sq*l,char *a)
{
if(l->top-l->base>l->stsize)
{
l->base=(element*)realloc(l->base,(l->stsize+sizenum)*sizeof(element));
if(!l->base)
return -1;
l->top=l->base+l->stsize;
l->stsize+=sizenum;
}
*(++l->top)=*a;
return 0;
}
void chuli(sq*l,char s[])
{
int i,len=strlen(s),flag=0;
for(i=0;i<=len-1;i++)
{
if(s[i]=='('||s[i]=='['||s[i]=='{')
{push(l,&s[i]);
flag=1;}
else
{
if(empty(l)&&(s[i]==']'||s[i]=='}'||s[i]==')'))
{ push(l,&s[i]);
flag=1;
break;
}
if(!empty(l)&&(s[i]=='}'||s[i]==']'||s[i]==')'))
{
if((*(l->top)=='('&&s[i]==')')||(*(l->top)=='['&&s[i]==']')||(*(l->top)=='{'&&s[i]=='}'))
{ flag=1;
l->top--;
}
else {
flag=1;
push(l,&s[i]);}
}
}
}
if(empty(l)&&flag==1)
printf("yes\n");
else printf("no\n");
}
int main()
{
char s[maxsize];
sq l;
while(gets(s)!=NULL)
{
intistack(&l);
chuli(&l,s);
}
return 0;
}
- 标准栈之括号匹配
- 栈之括号匹配
- 栈之括号匹配
- 栈之括号匹配问题
- 栈学习之括号匹配
- 栈运用之括号匹配
- 栈应用之括号匹配
- 栈应用之括号匹配
- 栈之应用---括号匹配
- 栈应用之括号匹配
- 数据结构之栈之括号匹配问题
- 括号匹配之添加最少括号匹配
- 栈及栈运用之括号匹配
- 栈的应用之括号匹配
- 数据结构栈的应用之括号匹配
- 栈的应用之括号匹配
- 数据结构之 栈的应用 括号匹配
- c栈的应用之括号匹配
- Django vs2015 学习开发日记2
- Calendar 类的应用
- html5创建局域接口实例
- Object Detection_1_级联分类器
- Linux文件存储
- 标准栈之括号匹配
- Android实现Banner界面广告图片循环轮播(包括实现手动滑动循环)
- throws和throw的比较
- [torch]read file
- centos 7安装mysql
- 安卓首页图片轮播效果(淘宝、京东首页广告效果)
- 数据结构实验之二叉树一:树的同构
- 适合用来做demo或者概念视频的轻音乐 慢慢添加
- 子类extends父类方法执行顺序