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

来源:互联网 发布:手机怎么进淘宝社区 编辑:程序博客网 时间:2024/06/05 10:02


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

题目描述

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

输入

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

输出

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

示例输入

sin(20+10){[}]

示例输出

yesno

提示

 

来源

ma6174

示例程序

#include<iostream>#include<stdio.h>#include<stack>using namespace std;int main(){    char a[51];    stack<char>f;    while (gets(a))//用cin遇上空格会分成两个字符串    {        for(int i=0;  a[i]!='\0'; ++i)        {            if(a[i]=='('||a[i]=='['||a[i]=='{')            {                f.push(a[i]);            }            else if(a[i]==')'||a[i]==']'||a[i]=='}')            {                if  (f.empty())                {                    f.push(a[i]);                }                else                {                    if((a[i]==')'&&f.top()=='(')||(a[i]==']'&&f.top()=='[')||(a[i]=='}'&&f.top()=='{'))                    {                        f.pop();                    }                    else if((a[i]==')'&&f.top()!='(')||(a[i]==']'&&f.top()!='[')||(a[i]=='}'&&f.top()!='{'))                        f.push(a[i]);                }            }        }        if(f.empty())            cout<<"yes"<<endl;        if(!f.empty())        {              cout<<"no"<<endl;                          while(!f.empty())                f.pop();//要将栈清空        }    }}


0 0
原创粉丝点击