描述:
假设一个表达式或一段程序中含有三种括号:圆括号“(”和“)”、方括号“[”和“]”、花括号“{”和“}”。试写一个程序判别给定的表达式或程序中所含括号是否正确配对出现。
输入说明:
多组输入数据,第1行为1个正整数n,表明有n组测试数据;其余n行为n组测试数据,每行为一个含有括号的表达式或一段程序。
输出说明:
对于每一组测试数据,输出一个right或wrong,表明正确匹配与否。
输入样例:
3
a=b+(c-d)*(e-f));
while (m<(a[8]+t) {m=m+1; t=t-1;}
b=a*(4+c)-c[i];
输出样例:
wrong
wrong
right
提示
用栈来实现
实现思路
代码
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#define MAXSIZE 20
#define ADD 5
typedef struct
{
char *top;
char *base;
int stacksize;
}Stack;
void Init(Stack *S);
void Push(Stack *S, char e);
char Pop(Stack *S);
int IsLeftBracket(char c);
int IsRightBracket(char c);
int Match(char left, char right);
int Empty(Stack S);
char GetTop(Stack S);
void ClearStack(Stack *S);
int main()
{
int n;
char sen[100];
scanf("%d", &n);
Stack S;
Init(&S);
int sign =