#include<stdio.h>
#include<malloc.h>
#include<string.h>
#define MAXSIZE 100
typedef struct
{
char *data;
int base;
int top;
}Stack;
void initStack(Stack *s)
{
s->data = (char*)malloc(MAXSIZE * sizeof(char));
if(!s->data)
{
return;
}
s->top = s->base = 0;
}
int push(Stack *s, char x)
{
if(s->top == MAXSIZE)
{
printf("Stack is full");
return 0;
}
s->data[s->top++] = x;
return 1;
}
int pop(Stack *s, char *x)
{
if(s->top == s->base)
{
printf("EMPTY");
return 0;
}
*x = s->data[--s->top];
return 1;
}
int main()
{
char ch[100];
Stack s;
int i = 0;
char temp;
int ok = 1;
initStack(&s);
printf("请输入括号表达式:\n");
gets(ch);
for(i = 0; ch[i]; ++i)
{
if(ch[i] == '(' || ch[i] == '[')
{
push(&s,ch[i]);
}
else if(ch[i] == ')' || ch[i] == ']')
{
if(pop(&s,&temp))
{
if((temp + 1 == ch[i]) || (temp + 2 == ch[i]))
{
continue;
}
else
{
ok = 0;
break;
}
}
else
{
ok = 0;
break;
}
}
}
if(s.top != s.base)
{
ok = 0;
}
if(ok == 1)
{
printf("匹配成功\n");
}
else
{
printf("匹配失败\n");
}
return 0;
}
#include<malloc.h>
#include<string.h>
#define MAXSIZE 100
typedef struct
{
char *data;
int base;
int top;
}Stack;
void initStack(Stack *s)
{
s->data = (char*)malloc(MAXSIZE * sizeof(char));
if(!s->data)
{
return;
}
s->top = s->base = 0;
}
int push(Stack *s, char x)
{
if(s->top == MAXSIZE)
{
printf("Stack is full");
return 0;
}
s->data[s->top++] = x;
return 1;
}
int pop(Stack *s, char *x)
{
if(s->top == s->base)
{
printf("EMPTY");
return 0;
}
*x = s->data[--s->top];
return 1;
}
int main()
{
char ch[100];
Stack s;
int i = 0;
char temp;
int ok = 1;
initStack(&s);
printf("请输入括号表达式:\n");
gets(ch);
for(i = 0; ch[i]; ++i)
{
if(ch[i] == '(' || ch[i] == '[')
{
push(&s,ch[i]);
}
else if(ch[i] == ')' || ch[i] == ']')
{
if(pop(&s,&temp))
{
if((temp + 1 == ch[i]) || (temp + 2 == ch[i]))
{
continue;
}
else
{
ok = 0;
break;
}
}
else
{
ok = 0;
break;
}
}
}
if(s.top != s.base)
{
ok = 0;
}
if(ok == 1)
{
printf("匹配成功\n");
}
else
{
printf("匹配失败\n");
}
return 0;
}