zoukankan      html  css  js  c++  java
  • 括号匹配(二)

    //C v0.01 不知题意,正在理解,正在(一)上修改。
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #define STACK_SIZE 10000
    typedef struct STACK{
      char stack[STACK_SIZE];
      int pointer;
    }STSTACK;
    STSTACK stack;
    
    
    void push(char ch);
    char pop();
    
    
    int main(int argc, char *argv[])
    {
      int num;
      int i;
      char buf[STACK_SIZE]={0};
      int sum = 0;
      scanf("%d",&num);
      getchar();
    
    
      for(i = 0;i < num;i++){
          memset(stack.stack, 0x00, STACK_SIZE);
          stack.pointer = -1;
          scanf("%s", buf);
          getchar();
          int len = strlen(buf);
          //printf("%d
    ",len);
          int j;
          int flag=1;
          for(j = 0;j < len;j++){
              char tmp;
              if(buf[j] == '[' || buf[j] == '('){
                  push(buf[j]);
    
    
                }else if (buf[j] == ']') {
                  if(stack.pointer == -1){
                      //--stack.pointer;
                      flag = 0;
                      push(buf[j]);
                      //++sum;
                      //printf("No
    ");
                      //break;
                      continue;
                    }
                  tmp = pop();
                  if(tmp != '['){
                      //push(tmp);
                      //printf("No
    ");
                      flag = 0;
                      push(tmp);
                      push(buf[j]);
                      //break;
                      continue;
                    }/*else if(tmp == '['){
                            continue;
                          }*/
    
    
                }else if (buf[j] == ')') {
                  if(stack.pointer == -1){
                     // --stack.pointer;
                      flag = 0;
                      push(buf[j]);
                      //++sum;
                      //printf("No
    ");
                      //break;
                      continue;
                    }
                  tmp = pop();
                  if(tmp != '('){
                      //push(tmp);
                      //printf("No
    ");
                      flag = 0;
                      push(tmp);
                      push(buf[j]);
                      //break;
                      continue;
                    }/*else if(tmp == '('){
                            continue;
                          }*/
                }
            }
    
    
    
    
          if(stack.pointer == -1 && flag){
              //printf("Yes
    ");
              printf("0
    ");
            }else{
                    //printf("No
    ");
              printf("%d
    ",stack.pointer+1);
                }
    
    
        }
      return 0;
    }
    
    
    void push(char ch){
      stack.stack[++stack.pointer] = ch;
    }
    
    
    char pop(){
      return stack.stack[stack.pointer--];
    }

  • 相关阅读:
    Spark_3:Spark集群搭建
    Spark_2:Spark 快速入门教程
    Spark快速大数据分析_11:第十一章
    Spark快速大数据分析_10:第十章
    Spark快速大数据分析_9:第九章
    Spark快速大数据分析_8:第八章
    Spark快速大数据分析_7:第七章
    Spark快速大数据分析_6:第六章
    Spark快速大数据分析_5:第五章
    java 内部类详解
  • 原文地址:https://www.cnblogs.com/guxuanqing/p/5638610.html
Copyright © 2011-2022 走看看