#include<stdio.h>
#include<malloc.h>
#define maxsize 1000
#define numsize 1000
typedef struct
{
int *base;
int *top;
int listsize;
}stack;
int init(stack *s)
{
s->base=(int *)malloc(maxsize *sizeof(int));
if(!s->base)
return -1;
s->top=s->base;
s->listsize=maxsize;
return 0;
}
int push(stack *s,int e)
{
*(++s->top)=e;
return 0;
}
void pop(stack *s)
{
s->top--;
}
void chuli(stack *s,char a[])
{
int i,f=0;
for(i=0;a[i]!='\0';i++)
{
if(a[i]=='['||a[i]=='{'||a[i]=='(')
{
push(s,a[i]);
}
else if(a[i]==')')
{
if(*s->top=='(')
{
pop(s);
}
else
{
f=1;
break;
}
}
else if(a[i]=='}')
{
if(*s->top=='{')
{
pop(s);
}
else
{
f=1;
break;
}
}
else if(a[i]==']')
{
if(*s->top=='[')
{
pop(s);
}
else
{
f=1;
break;
}
}
}
if(!f&&s->base==s->top)
printf("yes\n");
else printf("no\n");
}
int main()
{
int n;
char a[55];
stack s;
while(gets(a)!=NULL)
{
init(&s);
chuli(&s,a);
}
return 0;
}
#include<malloc.h>
#define maxsize 1000
#define numsize 1000
typedef struct
{
int *base;
int *top;
int listsize;
}stack;
int init(stack *s)
{
s->base=(int *)malloc(maxsize *sizeof(int));
if(!s->base)
return -1;
s->top=s->base;
s->listsize=maxsize;
return 0;
}
int push(stack *s,int e)
{
*(++s->top)=e;
return 0;
}
void pop(stack *s)
{
s->top--;
}
void chuli(stack *s,char a[])
{
int i,f=0;
for(i=0;a[i]!='\0';i++)
{
if(a[i]=='['||a[i]=='{'||a[i]=='(')
{
push(s,a[i]);
}
else if(a[i]==')')
{
if(*s->top=='(')
{
pop(s);
}
else
{
f=1;
break;
}
}
else if(a[i]=='}')
{
if(*s->top=='{')
{
pop(s);
}
else
{
f=1;
break;
}
}
else if(a[i]==']')
{
if(*s->top=='[')
{
pop(s);
}
else
{
f=1;
break;
}
}
}
if(!f&&s->base==s->top)
printf("yes\n");
else printf("no\n");
}
int main()
{
int n;
char a[55];
stack s;
while(gets(a)!=NULL)
{
init(&s);
chuli(&s,a);
}
return 0;
}