题目详情:
思路:Step1:如果是左括号,入栈
Step2:如果是右括号,就出栈顶的元素与右括号进行比对,如果匹配,继续,直到都匹配成功结束。否则退出,直接返回false.
栗子:1. {[()]} 左括号 '{' '[' '(' 入栈后与栈顶的右括号 )')' ']' '}' 依次进行匹配,结果发现匹配,返回true.
2. [(]} 左括号 '[' '(' 入栈,遇到右括号 ']' 与栈顶的左括号 '(' 匹配,匹配不上,返回false.
注意:无论匹配或者不匹配,都要摧毁栈,防止内泄漏
用c语言实现栈,没法直接引用,这里需要自己创建一个栈,在完成上述操作。如果还不会栈的小伙伴可以看看我的这篇博客 【数据结构】栈【详解】૮₍ ˃ ⤙ ˂ ₎ა-优快云博客
栈的实现:
typedef int STDataType;
typedef struct Stack//栈的声明与定义
{
STDataType* a;//定义一个指针,用于后续存储空间
int top;
int capacity;
}ST;
//初始化栈
void StackInit(ST* ps)
{
assert(ps);//为初始化的栈开辟一个空间
ps->a = (STDataType*)malloc(sizeof(STDataType) * 4);
if (ps->a == NULL)
{
printf("malloc fail\n");
exit(-1);
}
//同时让其容量为当前栈开辟的空间
ps->capacity = 4;
ps->top = 0;
}
//摧毁栈
void StackDestory(ST* ps)
{
assert(ps);
free