Status BracketMatchStack(char str[],SElemType e)
{//str[]为用char型数组储存的需检查字符串,匹配检测通过则e为0,若匹配检测未通过则e为出错位置
InitStack(&S);//构造一个空栈S
i = 0;
while(str[i] != NULL)
{ //若str[i]为括号则执行对应操作,str[i]为其他字符时直接跳过
if(str[i]=='{'||str[i]=='['||str[i]=='(')//左括号直接入栈
{
if(str[i]=='{')
mark='}';
if(str[i]=='[')
mark=']';
if(str[i]=='(')
mark=')';
Push(&S,mark);
}
if(str[i]=='}'||str[i]==']'||str[i]==')')//右括号与栈顶元素进行匹配检测
{
GetTop(&S,mark);
if(str[i]==mark)
{
Pop(&S,x);//若匹配则将此栈顶元素消除
}
else
{
e=i;
return ERROR;
}
}
i++;
}
e=0;
return OK;
}
伪代码:括号匹配
最新推荐文章于 2022-10-26 21:28:22 发布