您的位置:首页 > 理论基础 > 数据结构算法

SDUT 2134 数据结构实验之栈四:括号匹配

2012-02-11 19:12 344 查看
n圆括号和方括号,其嵌套的顺序随意。如([]())或[([ ][ ])]等为正确的匹配;而[( ])或([ ]( )或 ( ( ) ) )均为错误的匹配。

这里只介绍了()【】其实加上{}是一样的性质 看代码

#include<stdio.h>
#include<string.h>
int sw(char str)
{
if(str == '(')
return 1;
else
if(str == ')')
return 9;
else
if(str == '[')
return 2;
else
if(str == ']')
return 8;
else
if(str == '{')
return 3;
else
if(str == '}')
return 7;
else
return 0;
}
int push(int top,char str,char stack[])
{
stack[++top] = str;
return top;
}
int main()
{
int i,flag,k,j;
char str[51],stack[30];
while(gets(str)!=NULL)
{
int top = 0;
flag = 1;
k = strlen(str);
j = k;
for(i = 0 ; i < k ; i++)
{
if(sw(str[i])>0&&sw(str[i])<5)
top=push(top,str[i],stack);
else
if(sw(str[i])>0&&sw(str[i])>5)
{
if(top == 0)
{
flag = 0;
break;
}
if(sw(str[i])+sw(stack[top--]) == 10)
flag = 1;
else
flag = 0;
}
if(flag == 0)
break;
}

if(flag == 1&&top == 0)
printf("yes\n");
else
printf("no\n");
}
return 0 ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: