#include<stdio.h>
#include<stdlib.h>
#define maxsize 10
int flag;
typedef struct s {
char data[maxsize];
int top;
}SqStack;
int InitStack(SqStack& S1) {
S1.top = -1;
return 1;
}
int push(SqStack& S, char x) {
S.data[++S.top] = x;
return 1;
}
int pop(SqStack& S, char& x) {
x = S.data[S.top--];
return 1;
}
int isEmpty(SqStack S) {
if (S.top == -1) {
return 1;
}
else
{
return 0;
}
}
int pipei(SqStack &S,char *s) {
char e;
for (int i = 0;s[i]!='\0'; i++) {
if(s[i] == '{') {
push(S,s[i]);
continue;//进行下次循环,下面都不执行
}
if(s[i] == '}'){
pop(S, e);
if (e == '{') {
flag = 1;
continue;//进行下次循环,下面都不执行
}else {
flag = 0;
break;
}
}
if (s[i] == '(') {
push(S, s[i]);
continue;
}
if (s[i] == ')') {
pop(S, e);
if (e == '(') {
flag = 1;
continue;
}
else {
flag = 0;
break;
}
}
if (s[i] == '[') {
push(S, s[i]);
continue;
}
if (s[i] == ']') {
pop(S, e);
if (e == '[') {
flag = 1;
continue;
}
else {
flag = 0;
break;
}
}
}
if (flag == 1 && isEmpty(S))
{
printf("1111");
return 1;
}
else {
printf("0000");
return 0;
}
}
int main() {
char s[100];
gets_s(s);
SqStack S;
char x;
InitStack(S);
int n=pipei(S,s);
printf("%d", n);
if(n == 1) {
printf("匹配");
}
else
{
printf("不匹配");
}
}
括号匹配(顺序栈)
最新推荐文章于 2024-03-17 15:52:49 发布