博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
括号配对问题1
阅读量:6241 次
发布时间:2019-06-22

本文共 1227 字,大约阅读时间需要 4 分钟。

  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. }  

转载于:https://www.cnblogs.com/minTTremor/p/9087631.html

你可能感兴趣的文章
python pip install 出现 OSError: [Errno 1] Operation not permitted
查看>>
南京大学周志华教授当选欧洲科学院外籍院士
查看>>
计算机网络与Internet应用
查看>>
oracle在线迁移同步数据,数据库报错
查看>>
linux性能剖析工具
查看>>
flutter中的异步
查看>>
计算机高手也不能编出俄罗斯方块——计算机达人成长之路(16)
查看>>
# 2017-2018-1 20155224 《信息安全系统设计基础》第七周学习总结
查看>>
scikit-learn预处理实例之一:使用FunctionTransformer选择列
查看>>
Cassandra监控 - OpsCenter手册
查看>>
《AngularJS深度剖析与最佳实践》简介
查看>>
Android----------WindowManager
查看>>
通过DAC来连接SQL Server
查看>>
Oracle11G 卸载步骤
查看>>
Mars说光场(3)— 光场采集
查看>>
kettle与各数据库建立链接的链接字符串
查看>>
Android--调用系统照相机拍照与摄像
查看>>
【OpenCV学习】利用HandVu进行手部动作识别分析
查看>>
Ubuntu下安装配置JDK1.7
查看>>
AngularJS快速入门指南15:API
查看>>