zoukankan      html  css  js  c++  java
  • c判断括弧是否匹配

    这里我没有用堆栈。直接用一个数组input[SIZE]接收用户的输入,在遍历数组,对数组进行操作。已经匹配好的括弧直接用#号覆盖,最后遍历数组。如果数组只有#号,没有其他元素,则匹配。否则不匹配。

     1 /*
     2  *判断括弧是否匹配
     3  */
     4 
     5 #include <stdio.h>
     6 #include <stdlib.h>
     7 #include <string.h>
     8 
     9 #define SIZE 10000
    10 #define FALSE 0
    11 #define TRUE 1
    12 
    13 int main()
    14 {
    15     char input[SIZE];                                                                                        //存放输入
    16     
    17     int point_first = 0;                                                                                    //遍历每一次的输入的指针
    18     int point_last = 0;
    19     int flag = TRUE;                                                                                        //flag = TRUE括号匹配 flag = FALSE括号不匹配
    20     int num = 0;                                                                                            //一共要处理多少次输入                
    21     int length = 0;
    22     int i = 0;
    23 
    24 
    25     scanf("%d", &num);
    26 
    27     while(num > 0)                                                                                            //处理每一次输入
    28     {
    29         i = 0;
    30         flag = TRUE;
    31         scanf("%s", input);
    32         length = strlen(input);
    33         for(point_first = 0; point_first < length; point_first ++)
    34         {
    35             if(input[point_first] == ')' || input[point_first] == ']')                                        //如果遇到)或者]向前找匹配的括弧,将其变成#
    36             {
    37                 point_last = point_first - 1;
    38                 
    39                 for(; point_last >= 0 && input[point_last] == '#'; point_last --);                            //向前遍历 
    40                 
    41                 if(point_last >= 0)            
    42                     if((input[point_first] == ')' && input[point_last] == '(') || (input[point_first] == ']' && input[point_last] == '['))
    43                     {
    44                         input[point_last] = '#';
    45                         input[point_first] = '#';
    46                     }
    47                     else
    48                         break;
    49                 else
    50                     break;
    51             }
    52         }
    53         while(i < length)
    54         {
    55             if(input[i] != '#')
    56                 flag = FALSE;
    57             i++;
    58         }
    59         if(flag == FALSE)
    60             printf("%s
    ", "No");
    61         else
    62             printf("%s
    ", "Yes");
    63 
    64         num --;
    65     }
    66 
    67 }
  • 相关阅读:
    codeblocks 更换颜色主题
    python3 回顾笔记1
    linux查找目录下的所有文件中是否含有某个字符串
    jupyter notebook 远程访问
    ubuntu ufw防火墙
    加载大量的xml数据 使用压缩方法解决(当然较小时也可以压缩)
    lua string介绍
    Lua和C++交互详细总结
    编写高性能的 Lua 代码
    lua中遍历table的几种方式比较
  • 原文地址:https://www.cnblogs.com/luckygxf/p/3663106.html
Copyright © 2011-2022 走看看