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

来源:互联网 发布:java写hello world 编辑:程序博客网 时间:2024/06/07 03:59

Problem Description

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

Input

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

Output

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

Example Input

sin(20+10)
{[}]

Example Output

yes
no
 
 
 

#include<stdio.h>#include<string.h>#include<stdlib.h>char s[3][3]={{'(',')'},{'{','}'},{'[',']'}};char st[56];int top;void compa(int i,char str){    if(s[i][1]==str)    {        if(st[top]==s[i][0])        {            top--;        }        else        {            st[++top]=str;        }    }    else        st[++top]=str;}int search(char ch){    int i,j;    for(i=0;i<3;i++)    {        for(j=0;j<2;j++)        {            if(s[i][j]==ch)            {                return i;            }        }    }    return -1;}int main(){    char str[56];    int i,len;    int k;    while(gets(str))    {        top=0;        len=strlen(str);        for(i=0;i<len;i++)        {            k=search(str[i]);            if(k>=0&&k<=2)            {                compa(k,str[i]);            }        }        if(top==0)        {            printf("yes\n");        }        else        {            printf("no\n");        }    }}

 

0 0
原创粉丝点击