初入博客,献上括号匹配一段

初入博客,仰慕各位技术大牛,经验尚浅,还望各位多多指教!

我今天给大家分享一段括号匹配的代码,思路方法会在 c++专栏 中展出,话不多说,直接上代码:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #define stack_init_size 100
 4 #define true 1
 5 #define false 0
 6 typedef struct data{
 7     char *base;
 8     char *top;
 9     int stacksize;
10 }Stack,*Sptr; 
11 data* initstack(){
12     Stack S;
13     S.base=(char*)malloc(stack_init_size*sizeof(char));
14     S.top=S.base;
15     S.stacksize=100;
16     return &S;
17 } 
18 int check(Sptr a){
19     char expr[100],q;int i;
20     scanf("%s",&expr);
21     for(i=0;expr[i];i++){
22         if(expr[i]=='['||expr[i]=='{'||expr[i]=='(')
23         *a->top++=expr[i];
24         else
25         if(expr[i]==']'||expr[i]=='}'||expr[i]==')'){
26             if(a->top==a->base)return false;
27             else{
28                 q=*--a->top;
29                 switch(expr[i]){
30                     case')':if(q!='(')return false;break;
31                     case'}':if(q!='{')return false;break;
32                     case']':if(q!='[')return false;break;
33                     }
34                     a->top--;
35                 }
36             }
37         }
38     if(a->top==a->base)return true;
39     else
40     return false;
41 }
42 int main(){
43     Sptr S=initstack();
44     int T=check(S);
45     printf("%d",T);
46     return 0;
47 }

注:本代码在vs2015上调试可通过,如有疑问请与我交流。同时还希望有更好思路解法的大神予以指教,也希望大家多多发现我的问题,共同进步!

猜你喜欢

转载自www.cnblogs.com/heisen/p/8882026.html
今日推荐