初入博客,仰慕各位技术大牛,经验尚浅,还望各位多多指教!
我今天给大家分享一段括号匹配的代码,思路方法会在 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上调试可通过,如有疑问请与我交流。同时还希望有更好思路解法的大神予以指教,也希望大家多多发现我的问题,共同进步!