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

来源:互联网 发布:安卓 windows 如何切换 编辑:程序博客网 时间:2024/06/01 10:50

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

Time Limit: 1000MS Memory limit: 65536K

题目描述

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

输入

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

输出

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

示例输入

sin(20+10)
{[}]

示例输出

yes
no

 

 

  #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxsize 51 typedef char ElemType; typedef struct {     ElemType *base;     ElemType *top;     int Length; }SQ; int Init(SQ &S) {     S.base=(ElemType *)malloc(maxsize*sizeof(ElemType));     if(!S.base) exit(-1);     S.top=S.base;     S.Length=maxsize;     return 1; } int push(SQ &S,int e) {     *S.top++=e;     return 1; } int pop(SQ &S,ElemType &e) {     e=*(--S.top);     return 1; } int get(SQ &S) {     int e;     e=*(S.top-1);     return e; } int Empty(SQ &S) {     if(S.top==S.base) return 1;     return 0; } void Clear(SQ &S) {     S.top=S.base; } int com_de(char ch) {     if(ch=='(') return 1;     else if(ch=='[') return 2;     else if(ch=='{') return 3;     else if(ch=='}') return 7;     else if(ch==']') return 8;     else if(ch==')') return 9;     else return 0; } int main() {     ElemType e;     int n,len,i,flag;     char f[maxsize],ff[maxsize];     while(gets(f)!=NULL)     {         SQ S;         Init(S);         len=strlen(f);         flag=0;         for(i=0;i<len;i++)         {             if(com_de(f[i])>0&&com_de(f[i])<5)                push(S,f[i]);             else if(com_de(f[i])>5)             {                 if(Empty(S))                 {                     flag=0;                     break;                 }                 else                 {                     if(com_de(f[i])+com_de(get(S))==10)                     {                         flag=1;                         pop(S,e);                     }                     else                     {                         flag=0;                         break;                     }                 }             }         }         if(flag==1&&Empty(S))            printf("yes\n");         else            printf("no\n");     } }
0 0
原创粉丝点击