zoukankan      html  css  js  c++  java
  • 数据结构实验之栈四:括号匹配

    题目描述

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

    输入

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

    输出

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

    示例输入

    sin(20+10)
    {[}]

    示例输出

    yes
    no

    提示

     
    View Code
     1 #include<stdio.h>
     2 #define maxsize 51
     3 struct stack
     4 {
     5     char a[maxsize] ;
     6     int top ;
     7 }s ;
     8 int match(char c1, char c2)
     9 {
    10    if((c1=='{'&&c2=='}')||(c1=='('&&c2==')')||(c1=='['&&c2==']'))
    11    return 1 ;
    12    else
    13    return 0 ;
    14 }
    15 int m(char *str)
    16 {
    17     int i ;
    18     char c ;
    19     s.top = -1 ;
    20     for(i=0; str[i]!=0; i++)
    21     {
    22        switch(str[i])
    23        {
    24            case'(':
    25            case'[':
    26            case'{': s.top++;
    27                     s.a[s.top] = str[i] ;
    28                     break ;
    29            case')':
    30            case']':
    31            case'}': c = s.a[s.top] ;
    32                     if(match(c, str[i]))
    33                     s.top-- ;
    34                     else
    35                     return 0 ;
    36 
    37         }
    38     }
    39     if(s.top==-1)
    40     return 1;
    41     else return 0 ;
    42 }
    43 int main()
    44 {
    45    int i ;
    46    char str[51] ;
    47    while(gets(str)!=NULL)
    48    {
    49        i = m(str) ;
    50        if(i!=0)
    51        printf("yes\n") ;
    52        else printf("no\n") ;
    53    }
    54    return 0 ;
    55 }
  • 相关阅读:
    ubuntu配置bonding 武汉
    桌面图标加载与存储
    launcher 图标删除分析
    Inflater
    Android屏幕元素层次结构
    简述Android触摸屏手势识别
    RelativeLayout && inflate
    manifest分析
    vacantcell缓存分析
    桌面快捷键和桌面livefolder
  • 原文地址:https://www.cnblogs.com/yelan/p/2873021.html
Copyright © 2011-2022 走看看