3.18② 试写一个判别表达式中开、闭括号是否配对出现的算法。

2024-11-06 00:29:00
推荐回答(3个)
回答1:

Status MatchCheck(SqList exp)
/* 顺序表exp表示表达式; */
/* 若exp中的括号配对,则返回TRUE,否则返回FALSE */
/* 注:本函数不使用栈 */
{
if((0 != exp.length % 2))
{
return FALSE;
}

int i = 0;

int j = 0;

for( ; i <= exp.length - 1; i++)
{
if(exp.elem[i] == '(')

j++;

if(exp.elem[i] == ')')

j--;

if(j < 0)

return FALSE;

}
if(j == 0)

return TRUE;

else

return FALSE;

}

回答2:

typedef char ElemType
bool MatchCheck(SqList exp)
{
int count=0;
ElemType* p=exp.ElemType ;
while (p != NULL)
{
if(*p=='(')
count++;
else if(*p==')')
count--;
if(count < 0)
return FALSE
p++;
}
if (count==0)
return TRUE;
else
return FALSE;
}

回答3:

太繁琐!