SDUT 2134 数据结构实验之栈四:括号匹配
n圆括号和方括号,其嵌套的顺序随意。如([]())或[([ ][ ])]等为正确的匹配;而[( ])或([ ]( )或 ( ( ) ) )均为错误的匹配。
这里只介绍了()【】其实加上{}是一样的性质 看代码
1 #include<stdio.h>
2 #include<string.h>
3 int sw(char str)
4 {
5 if(str == '(')
6 return 1;
7 else
8 if(str == ')')
9 return 9;
10 else
11 if(str == '[')
12 return 2;
13 else
14 if(str == ']')
15 return 8;
16 else
17 if(str == '{')
18 return 3;
19 else
20 if(str == '}')
21 return 7;
22 else
23 return 0;
24 }
25 int push(int top,char str,char stack[])
26 {
27 stack[++top] = str;
28 return top;
29 }
30 int main()
31 {
32 int i,flag,k,j;
33 char str[51],stack[30];
34 while(gets(str)!=NULL)
35 {
36 int top = 0;
37 flag = 1;
38 k = strlen(str);
39 j = k;
40 for(i = 0 ; i < k ; i++)
41 {
42 if(sw(str[i])>0&&sw(str[i])<5)
43 top=push(top,str[i],stack);
44 else
45 if(sw(str[i])>0&&sw(str[i])>5)
46 {
47 if(top == 0)
48 {
49 flag = 0;
50 break;
51 }
52 if(sw(str[i])+sw(stack[top--]) == 10)
53 flag = 1;
54 else
55 flag = 0;
56 }
57 if(flag == 0)
58 break;
59 }
60
61 if(flag == 1&&top == 0)
62 printf("yes\n");
63 else
64 printf("no\n");
65 }
66 return 0 ;
67 }