關於括號匹配的問題及其源碼

#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;
}







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章