本文已参与「新人创作礼」活动,一起开启掘金创作之路。
判断括号匹配
判断算数表达式中括号是否配对。算数表达式保存在带头结点的单循环链表中,每个结点又两个域: ch 和 link,其中ch域为字符类型
bool check(LinkList L) {
InitStack(s);
LNode* p = L->link;
while (p != L) {//单循环链表
if (p->ch == '(' || p->ch == '[' || p->ch == '{')
push(s, p->ch);
else if (p->ch == ')') {
pop(s, e);
if (e != '(')
return false;
}
else if (p->ch == ']') {
pop(s, e);
if (e != '[')
return false;
}
else if (p->ch == '}') {
pop(s, e);
if (e != '{')
return false;
}
p = p->link;
}
if (!IsEmpty(s))
return false; //左括号多于右括号,括号不匹配
else
return true; //括号匹配
}