括号匹配的检验(栈结构)

#include<stdio.h>
#include<string.h>
#define MAX 20
struct stack
{
char a[MAX];
int top;
}op;
void main()
{
int flag=0;
char a;
op.top=-1;
printf("please input!\n");
scanf("%c",&op.a[++op.top]);
while(op.a[op.top]) //这里可以用(op.top!=-1)做条件,同理的
{
  scanf("%c",&a);
  switch(a)
  {
  case ')':if(op.a[op.top]=='(')
      op.top--;
        else
      flag=1;
   break;
  case ']':if(op.a[op.top]=='[')
      op.top--;
        else
      flag=1;
   break;
  case '}':if(op.a[op.top]=='{')
      op.top--;
        else
      flag=1;
   break;
  case '(':
  case '{':
  case '[':op.a[++op.top]=a;break;
  }
  if(flag)
   break;
}
if(flag)
  printf("input error!\n");
else
  printf("input right!\n");
}

posted @ 2017-09-22 23:10  lijianzhq  阅读(305)  评论(0)    收藏  举报