//括号匹配:
#include<stdio.h>
#include<stdlib.h>
#define Stack_size 100
#define Stackincreament 10
typedef struct{
char *base;
int top;
int stacksize;
}sqstack;
void initstack(sqstack &la)
{
la.base=(char*)malloc(Stack_size*sizeof(char));
la.stacksize=Stack_size;
if(!la.base)
exit(0);
la.top=0;
}
void push(sqstack &L,char e)
{
if(L.top>=L.stacksize)
{
L.base=(char*)realloc(L.base,(Stack_size+Stackincreament)*sizeof(char));
if(!L.base)
exit(0);
L.stacksize+=Stackincreament;
}
L.base[L.top++]=e;
}
void pop(sqstack &l,char &e)
{
if(l.top==0)
return;
e=l.base[--l.top];
}
int allbraket(char *str)
{
sqstack s;
char *p,ch;
p=str;
initstack(s);
while(*p!='\0')
{
if(*p=='{'||*p=='['||*p=='(')
push(s,*p);
else if(*p=='}'||*p==']'||*p==')')
{
if(s.top==0)
return 0;
else
{
pop(s,ch);
if(*p==')'&&ch!='(')
return 0;
if(*p=='}'&&ch!='{')
return 0;
if(*p==']'&&ch!='[')
return 0;
}
}
p++;
}
if(s.top==0)
return 1;
return 0;
}
int main()
{
char str[20];
gets(str);
if(allbraket(str))
printf("括号匹配\n");
else
printf("括号不匹配\n");
printf("\n");
return 0;
}
数据结构C语言版之括号匹配
最新推荐文章于 2021-10-12 21:38:18 发布