C语言检测表达式括号是否匹配
温柔似野鬼°
876次浏览
2020年08月01日 06:07
最佳经验
本文由作者推荐
成语如什么-千古绝唱的意思
#include
#include
#include
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct
{
char *base;
char *top;
int stacksize;
}SqStack;
void InitStack(SqStack &S)
{
= (char*)malloc(STACK_INIT_SIZE*sizeof(char));
if (!)
{
exit(0);
}
=
ize = STACK_INIT_SIZE;
}
void Push(SqStack &S, char e)
{
if ( - >= ize)
{
= (char *)realloc(, (ize + STACKINCREMENT)*sizeof(char));
= + ize;
ize += STACKINCREMENT;
}
if (!)
{
exit(0);
}
* = e;
++;
printf("入栈
");
}
void Pop(SqStack &S)
{
if ( == )
{
return
}
--;
printf("出栈
");
}
void DestoryStack(SqStack &S)
{
free();
}
int main()
{
SqStack S;
InitStack(S);
char str[200];
printf("输入数据
");
gets_s(str);//读入一串括号 小括号或大括号
puts(str);
int i;
for (i = 0; str[i] != '0'; i++)
{
if (str[i] ==')')
{
if (*( - 1)== '(')
{
Pop(S);
}
else
{
printf("不匹配la
");
return 0;
}
}
else if (str[i] == '}')
{
if (*( - 1) == '{')
{
Pop(S);
}
else
{
printf("不匹配
");
return 0;
}
}
else
{
Push(S, str[i]);
}
}
if ( == )
{
printf("匹配
");
}
else
{
printf("不匹配
");
}
return 0;
}