1.链接: . – 力扣(LeetCode)【点击即可跳转】

数据结构—力扣 20.有效的括号 (C语言插图

数据结构—力扣 20.有效的括号 (C语言插图(1)

思路:

使用 栈  来完成操作

1.左括号– 入栈

2.右括号– 判断出栈顶的左括号与右括号是否匹配

  如果匹配–>继续

     不匹配–>终止

代码中 栈 的基本实现,不在以下展示,参考上一篇文章。

以下为函数的具体实现:

bool isValid(char* s) 
{
    ST st;
    StackInit(&st);
    while(*s !='
bool isValid(char* s) 
{
ST st;
StackInit(&st);
while(*s !='\0')
{
switch(*s)
{          //左括号
case'{':
case'[':
case'(':
{
StackPush(&st,*s);
++s;
break;
}       //右括号
case'}':
case']':
case')':
{
if(StackEmpty(&st))
{
StackDestory(&st);
return false;
}
char top=StackTop(&st);
StackPop(&st);
//不匹配
if((*s=='}'&&top!='{')
||(*s==']'&&top!='[')
||(*s==')'&&top!='('))
{
StackDestory(&st);
return false;
}
else//匹配
{
++s;
}
break;
}
default:
break;
}
}   
bool ret=StackEmpty(&st);
StackDestory(&st);
return ret;
}
') { switch(*s) { //左括号 case'{': case'[': case'(': { StackPush(&st,*s); ++s; break; } //右括号 case'}': case']': case')': { if(StackEmpty(&st)) { StackDestory(&st); return false; } char top=StackTop(&st); StackPop(&st); //不匹配 if((*s=='}'&&top!='{') ||(*s==']'&&top!='[') ||(*s==')'&&top!='(')) { StackDestory(&st); return false; } else//匹配 { ++s; } break; } default: break; } } bool ret=StackEmpty(&st); StackDestory(&st); return ret; }

谢谢观看,希望对你有所帮助

本站无任何商业行为
个人在线分享 » 数据结构—力扣 20.有效的括号 (C语言
E-->