当输入为左括号时,进行压栈操作,当输入为右括号时,判定其与当前栈顶的左括号是否匹配,如果匹配进行弹栈操作,继续判定下面的输入;如果不匹配则输出括号匹配错误。
void bracket(LinkStack *S)
{
char str[100];
char b,a;
int i;
printf("输入一串括号\n");
scanf("%s",str);
for(i=0;i<strlen(str);i++)
{
if(str[i]=='[')
{
b=str[i];
printf("压入栈的括号是:%c\n",b);
Push(S,b);
}
else if(str[i]==']')
{
a=S->top->data;
b='[';
if(a==b)
Pop(S);
else
printf("括号匹配错误\n");
}
else if(str[i]=='(')
{
b=str[i];
printf("压入栈的括号是:%c\n",b);
Push(S,b);
}
else if(str[i]==')')
{
a=S->top->data;
b='(';
if(a==b)
Pop(S);
else
printf("括号匹配错误\n");
}
}
printf("\n");
}