用C++设计一个算法,判别一个算术表达式的圆括号是否配对正确。

qq_宸子_04228031
浏览 3804回答 1
1回答

asd8532

#include "stdio.h" void BracketMatch(char *str) /* str[]中为输入的字符串,利用堆栈技术来检查该字符串中的括号是否匹配*/ {     SeqStack S;      int i;      char ch;           InitStack(&S);           for(i=0; str[i]!='\0'; i++)   /*对字符串中的字符逐一扫描*/     {         switch(str[i])         {         case '(':         case '[':         case '{':             Push(&S,str[i]);               break;           case ')':           case ']':           case '}':             if(IsEmpty(&S))             {                  printf("\n右括号多余!");                   return;             }             else             {                 GetTop(&S,&ch);                 if(Match(ch,str[i]))  /*用Match判断两个括号是否匹配*/                     Pop(&S,&ch);      /*已匹配的左括号出栈*/                 else                 {                     printf("\n对应的左右括号不同类!");                       return;                 }             }         }/*switch*/     }/*for*/     if(IsEmpty(&S))         printf("\n括号匹配!");     else         printf("\n左括号多余!"); }   void main() {     char str[100];     printf("please input:");     gets(str);     BracketMatch(str); }
打开App,查看更多内容
随时随地看视频慕课网APP