sinat_31829943 2015-10-26 05:25 采纳率: 60%
浏览 1721

C/C++ 用顺序表实现的括号匹配问题

我的代码

 #include<stdio.h>  
#include<string.h>     
#define TRUE 1  
#define FALSE 0  
typedef struct  
{  
    char data[100];  
    int top;  
}Stack;  
int InitStack(Stack stack)  
{  
    stack.top=-1;  
    return TRUE;  
}  
int Push(Stack &stack,char &ch)  
{  
    if(stack.top == 99)  
         return FALSE;  
    stack.top++;  
    stack.data[stack.top]=ch;  
    return TRUE;  
}  
int Pop(Stack &stack,char &ch)  
{  
    if(stack.top ==-1)  
        return FALSE;  
    ch=stack.data[stack.top];  
    stack.top--;  
    return TRUE;  
}  
int IsEmpty(Stack stack)  
{  
    if(stack.top ==-1)  
       return TRUE;  
    else   
        return FALSE;  
}  
void GetTop(Stack stack,char ch)  
{  
    if(stack.top ==-1)  
        printf("Õ»¿Õ\n");  
    else  
        ch=stack.data[stack.top];  
}  
int Match(char s,char str)  
{  
    if(str ==')' && s =='(')  
       return TRUE;  
    if(str == ']' && s=='[')  
        return TRUE;  
    if(str =='}' && s=='{')  
        return TRUE;  
    return FALSE;  
}  
void BracketMatch(char str[])  
{  
  Stack stack;  
  int i;  
  char character;  
  InitStack(stack);  
  for(i=0;str[i]!='\0';i++)  
  {  
      switch(str[i])  
      {  
      case '(':  
      case '[':  
      case '{':  
          Push(stack,str[i]);  
          break;  
      case ')':  
      case ']':  
      case '}':  
          if(IsEmpty(stack))  
          {  
               printf("\nÓÒÀ¨ºÅ¶àÓà\n");  
               return;  
          }  
          else   
          {  
              GetTop(stack,character);  
              if(Match(character,str[i]))  
                  Pop(stack,character);  
              else  
                  printf("\n¶ÔÓ¦µÄÓÒÀ¨ºÅÕÒ²»µ½Æ¥ÅäµÄ×óÀ¨ºÅ\n");  
          }  
      }  
  } 
  if(IsEmpty(stack))  
      printf("\nÀ¨ºÅÆ¥Åä!\n");  
  else  
      printf("\n×óÀ¨ºÅ¶àÓà!\n");  
}  
int main()  
{  
    char str[100]; 
    int i=0;
    printf("ÇëÊäÈëÒ»¸ö×Ö·û´®,×¢Òâ´øÉÏÀ¨ºÅ\n");  
    gets(str);
    BracketMatch(str);  
    return 0;  
}  

不能正常运行麻烦帮忙看下程序,谢谢~

  • 写回答

1条回答 默认 最新

  • 另一花生 2015-10-26 05:27
    关注

    是报语法错误,还是测试数据没有达到预期呢

    评论

报告相同问题?

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作