码迷,mamicode.com
首页 > 其他好文 > 详细

括号配对问题1

时间:2018-05-25 13:57:35      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:alt   size   问题   char   str   its   std   sem   tar   

  1. #include<stdio.h>  
  2. #include<stdlib.h>  
  3. #define Stack_size 10000  
  4. typedef struct{  
  5.     char elem[Stack_size];  
  6.     int top;  
  7. } SeqStack;   
  8. void InitStack (SeqStack *S) {  
  9.     S->top = -1;  
  10. }  
  11. int IsEmpty (SeqStack *S) {  
  12.     if (S->top == -1)  return 1;  
  13.     else  
  14.         return 0;  
  15. }  
  16. int Push (SeqStack *S,char x) {  
  17.     if(S->top == Stack_size-1)  return 0;  
  18.     S->top++;  
  19.     S->elem[S->top] = x;  
  20.     return 0;  
  21. }  
  22. int GetTop (SeqStack *S,char *x) {  
  23.     if (S->top == -1)  return 0;  
  24.     else {  
  25.         *x=S->elem[S->top];  
  26.         return 1;  
  27.     }  
  28. }  
  29. int Pop (SeqStack *S,char *x) {  
  30.     if (S->top == -1)  return 0;  
  31.     else {  
  32.         *x=S->elem[S->top];  
  33.         S->top--;  
  34.         return 0;  
  35.     }  
  36. }  
  37. int Match (char a,char b){  
  38.     if (a+1==b||a+2==b)  return 1;  
  39.     else   
  40.         return 0;  
  41. }  
  42. int BracketMatch (char *str){  
  43.     SeqStack S;int i;char ch;  
  44.     InitStack (&S);  
  45.     for (i=0; str[i]!=‘\0‘; i++){  
  46.         switch (str[i]) {  
  47.             case ‘(‘:  
  48.             case ‘[‘:  
  49.             case ‘{‘:  
  50.                 Push (&S,str[i]);  
  51.                 break;  
  52.             case ‘)‘:  
  53.             case ‘]‘:  
  54.             case ‘}‘:  
  55.                 if (IsEmpty (&S) ){  
  56.                     printf("No\n");  
  57.                     return 0;  
  58.                 }  
  59.                 else {  
  60.                     GetTop (&S,&ch);  
  61.                     if (Match(ch,str[i]))  
  62.                         Pop (&S,&ch);  
  63.                     else{  
  64.                         printf("No\n");  
  65.                         return 0;  
  66.                     }  
  67.                 }  
  68.         }  
  69.     }  
  70.     if (IsEmpty (&S) )  
  71.         printf("Yes\n");  
  72.     else  
  73.         printf("No\n");  
  74.     return 0;  
  75. }  
  76. int main(){  
  77.     int n;  
  78.     char a[10000];  
  79.     scanf("%d",&n);  
  80.     while (n--){  
  81.         scanf("%s",a);  
  82.         BracketMatch (a);  
  83.     }  
  84.     return 0;  
  85. }  

括号配对问题1

标签:alt   size   问题   char   str   its   std   sem   tar   

原文地址:https://www.cnblogs.com/minTTremor/p/9087631.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!