#include<iostream>
using namespace std;
typedef struct
{
int *base;
int *top;
int stocksize;
}sqstack;
int creat(sqstack *s)
{
(*s).base=(int *)malloc(100*sizeof(int));
(*s).top=(*s).base;
(*s).stocksize=100;
return 1;
}
int push(sqstack *s,char x)
{
if(s->top-s->base>=100)
{
s->base=(int *) realloc(s->base,(s->stocksize+10)*sizeof(int));
s->stocksize+=10;
}
*(s->top)=x;
s->top++;
return 1;
}
int pop(sqstack* s)
{
if(s->top==s->base) return 0;
s->top=s->top-1;
return 1;
}
int empty(sqstack *s)
{
if(s->top==s->base) return 1;
else return 0;
}
void serach(char *x)
{
sqstack s;
creat(&s);
int i,length=strlen(x);
int j=2;
for(i=1;i<=length;i++)
{
if(x[i-1]=='('||x[i-1]==')')
j=j+1;
}
if(j==2)
cout<<"没有括号"<<endl;
for(i=1;i<=length;i++)
{
if(x[i-1]=='(')
{push(&s,x[i-1]);}
else if(x[i-1]==')')
{ j=pop(&s);
if(j==0)
break;
else
continue;}
}
if(empty(&s)==1&&j==1)
cout<<"匹配"<<endl;
else if(empty(&s)==0||j==0)
cout<<"不匹配"<<endl;
}
void main()
{
char x[100];
while(true)
{cout<<"enter char:";
cin>>x;
serach(x);
}
}
using namespace std;
typedef struct
{
int *base;
int *top;
int stocksize;
}sqstack;
int creat(sqstack *s)
{
(*s).base=(int *)malloc(100*sizeof(int));
(*s).top=(*s).base;
(*s).stocksize=100;
return 1;
}
int push(sqstack *s,char x)
{
if(s->top-s->base>=100)
{
s->base=(int *) realloc(s->base,(s->stocksize+10)*sizeof(int));
s->stocksize+=10;
}
*(s->top)=x;
s->top++;
return 1;
}
int pop(sqstack* s)
{
if(s->top==s->base) return 0;
s->top=s->top-1;
return 1;
}
int empty(sqstack *s)
{
if(s->top==s->base) return 1;
else return 0;
}
void serach(char *x)
{
sqstack s;
creat(&s);
int i,length=strlen(x);
int j=2;
for(i=1;i<=length;i++)
{
if(x[i-1]=='('||x[i-1]==')')
j=j+1;
}
if(j==2)
cout<<"没有括号"<<endl;
for(i=1;i<=length;i++)
{
if(x[i-1]=='(')
{push(&s,x[i-1]);}
else if(x[i-1]==')')
{ j=pop(&s);
if(j==0)
break;
else
continue;}
}
if(empty(&s)==1&&j==1)
cout<<"匹配"<<endl;
else if(empty(&s)==0||j==0)
cout<<"不匹配"<<endl;
}
void main()
{
char x[100];
while(true)
{cout<<"enter char:";
cin>>x;
serach(x);
}
}