//括号匹配
#include <stdio.h>
#include <stdlib.h>
typedef struct Node{
char c;
struct Node *next;
}Node,*PNode;
typedef struct Stack{
PNode top;
}Stack,*PStack;
void Push(PStack S,char c){
PNode p;
p = (PNode)malloc(sizeof(Node));
p->c = c;
p->next = S->top;
S->top = p;
}
char Pop(PStack S){
char c;
PNode p;
if(S->top == NULL)
{
printf("空");
c = '0';
return c;
}
else
{
p = S->top;
c = p->c;
S->top = p->next;
free(p);
}
return c;
}
int main(){
PStack s;
s = (PStack)malloc(sizeof(Stack));
s->top = NULL;
int flag = 0;
char c;
while(1){
c = getchar();
if(c == '\n')
break;
switch(c)
{
case('{'):
case('('):
case('['):Push(s,c);
break;
case(')'):{
if(s->top == NULL)
flag = 1;
else if(Pop(s)=='(') break;
else {
flag = 1;
break;
}
}
case(']'):{if(s->top == NULL)
flag = 1;
else if(Pop(s)=='[') break;
else {
flag = 1;
break;
}
}
case('}'):{if(s->top == NULL)
flag = 1;
else if(Pop(s)=='{') break;
else {
flag = 1;
break;
}
}
default:
break;
}
if(flag == 1)
break;
}
if(s->top != NULL) flag = 1;
if(flag != 0)
printf("no");
else
{
printf("yes");
}
return 0;
}
noj7括号匹配
最新推荐文章于 2022-03-27 10:42:36 发布