数据结构实验之栈四:括号匹配

来源:互联网 发布:黑客编程入门 编辑:程序博客网 时间:2024/06/05 05:17

数据结构实验之栈四:括号匹配

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

 给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。

输入

 输入数据有多组,处理到文件结束。

输出

 如果匹配就输出“yes”,不匹配输出“no”

示例输入

sin(20+10){[}]

示例输出

yesno

提示

 

来源

ma6174

示例程序

 
[cpp] view plain copy
  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <string.h>  
  4. int main()  
  5. {  
  6.     int i,j,n,l;  
  7.     char s[150],p[150];  
  8.     while(gets(s)!=NULL)  
  9.     {  
  10.         n=strlen(s);  
  11.         j=0;                                      //标示符号  
  12.         l=1;  
  13.         for(i=0; i<n; i++)  
  14.         {  
  15.             if(s[i]=='{'||s[i]=='('||s[i]=='[')  
  16.             {  
  17.                 p[j++]=s[i];  
  18.             }  
  19.             if(s[i]==')')  
  20.             {  
  21.                 if(j==0)  
  22.                 {  
  23.                     l=0;  
  24.                     break;  
  25.                 }  
  26.                 if(j>0&&p[j-1]=='(')              //与上一个元素比较  
  27.                 {  
  28.                     j=j-1;  
  29.                 }  
  30.                 else if(j>0&&p[j-1]!='(')  
  31.                 {  
  32.                     l=0;  
  33.                     break;  
  34.                 }  
  35.             }  
  36.             if(s[i]==']')  
  37.             {  
  38.                 if(j==0)  
  39.                 {  
  40.                     l=0;  
  41.                     break;  
  42.                 }  
  43.                 if(j>0&&p[j-1]=='[')  
  44.                 {  
  45.                     j=j-1;  
  46.                 }  
  47.                 else if(j>0&&p[j-1]!='[')  
  48.                 {  
  49.                     l=0;  
  50.                     break;  
  51.                 }  
  52.             }  
  53.             if(s[i]=='}')  
  54.             {  
  55.                 if(j==0)  
  56.                 {  
  57.                     l=0;  
  58.                     break;  
  59.                 }  
  60.                 if(j>0&&p[j-1]=='{')  
  61.                 {  
  62.                     j=j-1;  
  63.                 }  
  64.                 else if(j>0&&p[j-1]!='{')  
  65.                 {  
  66.                     l=0;  
  67.                     break;  
  68.                 }  
  69.             }  
  70.         }  
  71.         if(l==0||j>0)  
  72.             printf("no\n");  
  73.         else if(j==0)  
  74.             printf("yes\n");  
  75.     }  
  76.     return 0;  
  77. }  

0 0