题目:设计一个算法,判断一个算数表达式中的括号是否配对。算数表达式保存在带头结点的单循环链表中,每个结点有两个域:ch和link,其中ch域为字符类型。
思想: 利用栈进行匹配,所有左括号进栈,右括号匹配栈顶元素,不匹配表达式不配对。
代码展示:
int kuohao(LinkList L)
{
char s[100],t;
int top=-1;
LinkList p=L->next;
while(p!=NULL)
{
switch(p->data)
{ case '(': s[++top]='(';break;
case '[': s[++top]='[';break;
case '{': s[++top]='{';break;
case ')': {if(s[top]!='(') return 0;else top--; break;}
case ']': {if(s[top]!='[') return 0;else top--;break;}
case '}': {if(s[top]!='{') return 0;else top--;break;}
} p=p->next;
}
if(top==-1) return 1;//1代表匹配
else return 0;//0代表不匹配
}
|