您的位置:首页 > 其它

关于括号匹配的问题及其源码

2016-04-13 19:12 429 查看
#include<stdio.h>

#include<stdlib.h>

#include<math.h>

#include<string.h>

int main()

{

char **p,c;

int i,j,k,sum,n,l;

char *q;

char a[100]={0};

while(scanf("%d",&n)!=EOF){

p=(char**)malloc(n*sizeof(char*));

for(i=0;i<n;i++)

{

*(p+i)=(char*)malloc(100*sizeof(char));

scanf("%s",*(p+i));

}

for(i=0;i<n;i++)

{

l=0;

int flag=1;

l=strlen(*(p+i)) ;

memset(a,0,100);

q=&a[0];

for(j=0;j<l;j++)

{

switch(*(*(p+i)+j))

{

case '(':

*q=*(*(p+i)+j);

q=q+1;

break;

case '[':

*q=*(*(p+i)+j);

q=q+1;

break;

case '{':

*q=*(*(p+i)+j);

q=q+1;

break;

case ')':

if(q!=a&&*(q-1)=='('){

q--;

}

else

{

flag=0;

}

break;

case '}':

if(q!=a&&*(q-1)=='{'){

q--;

}

else

{

flag=0;

}

break;

case ']':

if(*(q-1)=='['&& q!=a ){

q--;

}

else

{

flag=0;

}

break;

}

}

if(q==a&&flag==1)

{printf("Yes\n");

}

else

{printf("No\n");

}

}

free(p);
}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: