算法思路
- 使用一个字符串数组保存括号式。
- 从左向右读取括号式,如果遇到左括号即
'(','[','{' 就压入栈中,如果遇到右括号即')',']','}' 就对栈顶的元素进行对比,如果匹配成功就将栈顶元素弹出。
算法实现
_Bool parChecker()
{
int length, i;
LiStack L;
L = initStack();
char symbolString[100];
printf("请输入括号式:\n");
scanf("%s", symbolString);
getchar();
length = (int) strlen(symbolString);
for (i = 0; i < length; i++)
{
if (symbolString[i] == '(' || symbolString[i] == '[' || symbolString[i] == '{')
{
push(L, symbolString[i]);
}
else
{
if (symbolString[i] == ')')
{
if (top(L) == '(')
{
pop(L);
}
else
{
return false;
}
}
else if (symbolString[i] == ']')
{
if (top(L) == '[')
{
pop(L);
}
else
{
return false;
}
}
else
{
if (top(L) == '{')
{
pop(L);
}
else
{
return false;
}
}
}
}
if (stackEmpty(L))
{
return true;
}
else
{
return false;
}
}
|