sdut 数据结构实验之栈四:括号匹配
来源:互联网 发布:windows功能哪些不能关 编辑:程序博客网 时间:2024/06/06 03:56
Problem Description
Input
Output
Example Input
sin(20+10){[}]
Example Output
yesno
Hint
Author
ma6174
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define INIT_STACK_SIZE 100000 //栈的初始分配量
#define stackincrement 1000 //栈的初始分配增量
typedef int element;
typedef struct
{
element *base,*top;
int stacksize;
}Sqstack;
int Initstack(Sqstack *s)
{
s->base=(element *)malloc(INIT_STACK_SIZE*sizeof(element));
if(!s->base) return -1;
s->top=s->base;
s->stacksize=INIT_STACK_SIZE;
return 0;
}
int clearstack(Sqstack *s) //清空函数,每次处理完一组数据后,要清空栈;
{
s->top=s->base;
return 0;
}
int Pushstack(Sqstack *s,int n)
{
if(s->top-s->base>=s->stacksize)
{
s->base=(element *)realloc(s->base,(INIT_STACK_SIZE+stackincrement)*sizeof(element ));
if(!s->base) return -1;
s->top=s->base + s->stacksize;
s->stacksize+=INIT_STACK_SIZE;
}
*(s->top++)=n;
return 0;
}
int Popstack(Sqstack *s)
{
if(s->base==s->top) return -1;
--s->top;
return 0;
}
void pipei(Sqstack *s)
{
int flag;
char ch[52];int i;
while(gets(ch))
{
flag=1;
for(i=0;i<strlen(ch);i++)
{
if(ch[i]=='('||ch[i]=='['||ch[i]=='{') //如果遇到左括号时,使左括号进栈
Pushstack(s,ch[i]);
else if(ch[i]==')'||ch[i]==']'||ch[i]=='}') //当遇到右括号时,判断栈顶元素是否与其匹配,如果不匹配,则结束;否则栈顶元素出栈
{
if((ch[i]==')'&&*(s->top-1)=='(')||(ch[i]=='}'&&*(s->top-1)=='{')||(ch[i]==']'&&*(s->top-1)=='['))
Popstack(s);
else
{
flag=0;
break;
}
}
}
if(flag==1&&(s->base==s->top))
printf("yes\n");
else
printf("no\n");
clearstack(s); //清空栈
}
}
int main()
{
Sqstack s;
Initstack(&s);
pipei(&s);
return 0;
}
- [SDUT](2134)数据结构实验之栈四:括号匹配 ---栈
- SDUT OJ 数据结构实验之栈四:括号匹配
- SDUT 2134 数据结构实验之栈四:括号匹配
- 数据结构实验之栈四:括号匹配 SDUT 2134
- SDUT 2143 数据结构实验之栈四:括号匹配
- sdut oj2134 数据结构实验之栈四:括号匹配
- SDUT OJ 数据结构实验之栈四:括号匹配
- SDUT 2134 数据结构实验之栈四:括号匹配
- SDUT-数据结构实验之栈四:括号匹配
- sdut 数据结构实验之栈四:括号匹配
- sdut 2134 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配 sdut-oj
- SDUT 2134 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈四:括号匹配
- 数据结构实验之栈四:括号匹配
- 数据结构实验之栈四:括号匹配
- 数据结构实验之栈四:括号匹配
- 数据结构实验之栈四:括号匹配
- KHL 003 11-计算机-本职-前台 伸缩布局盒模型
- (UDP)上传文件
- javaScript 高级程序设计 第2章 在HTML中使用JavaScript
- NUMBER BASE CONVERSION POJ 1220 进制转换模板
- java中的强、软、弱、虚四种引用
- sdut 数据结构实验之栈四:括号匹配
- 【MySql】关系型数据库介绍一
- STL常用容器用法之——vector
- 基于hibernate的BaseDAO接口
- AI开发实战5-文本输入框(TextBox)的定制2
- 剑指offer_数组---替换空格
- Three.js使用局部纹理更新
- h5笔记
- 概率论与数理统计基本概念