铜川网站开发,微信被不明android账号登录,温州网站设计网站建设网站,昆明网页制作设计提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 1、有效的括号题目#xff1a; 1.1方法讲解#xff1a; 1.2代码实现#xff1a; 总结 前言
世上有两种耀眼的光芒#xff0c;一种是正在升起的太阳#… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 前言 1、有效的括号题目 1.1方法讲解 1.2代码实现 总结 前言
世上有两种耀眼的光芒一种是正在升起的太阳一种是正在努力学习编程的你!一个爱学编程的人。各位看官我衷心的希望这篇博客能对你们有所帮助同时也希望各位看官能对我的文章给与点评希望我们能够携手共同促进进步在编程的道路上越走越远 提示以下是本篇文章正文内容下面案例可供参考
1、有效的括号题目 1.1方法讲解 解题思路 栈的规则后入先出。我们这道题用栈来解答。 步骤1、遍历字符串 2、让字符串中的左括号’(‘‘[’ ‘{’入栈 3、如果遇到右括号’)’ ‘]’ ‘}’就出栈让栈顶出来的左括号与右括号进行匹配。 在对左、右括号匹配时可能会出现以下几种情况 1、右括号比左括号多数量匹配问题返回false 2、左括号比右括号多数量匹配问题返回false 3、全是左括号或者全是右括号数量匹配问题返回false。 1.2代码实现
typedef int STDataType;
typedef struct stack
{STDataType* a;int top;//标识栈顶的位置int capacity;
}ST;//初始化
void STInit(ST* pst);
//销毁
void STDestory(ST* pst);//压栈
void STPush(ST* pst, STDataType x);
//出栈
void STPop(ST* pst);//获取栈顶元素
STDataType STTop(ST* pst);//判空
bool STEmpty(ST* pst);//统计栈内元素个数
int STSize(ST* pst);//初始化
void STInit(ST* pst)
{assert(pst);pst-a NULL;//表示top指向栈顶元素的下一个位置pst-top 0;//表示top指向栈顶元素//pst-top -1;pst-capacity 0;
}
//销毁
void STDestory(ST* pst)
{assert(pst);free(pst-a);pst-a NULL;pst-capacity pst-top 0;
}//压栈
void STPush(ST* pst, STDataType x)
{assert(pst);//判断数组栈空间是否足够if (pst-top pst-capacity){int newcapacity pst-capacity 0 ? 4 : pst-capacity * 2;STDataType* tmp (STDataType*)realloc(pst-a, sizeof(STDataType) * newcapacity);if (tmp NULL){perror(realloc fail);return;}pst-a tmp;pst-capacity newcapacity;}pst-a[pst-top] x;pst-top;
}
//出栈
void STPop(ST* pst)
{assert(pst);assert(pst-top 0);pst-top--;
}//获取栈顶元素
STDataType STTop(ST* pst)
{assert(pst);assert(pst-top 0);return pst-a[pst-top - 1];
}//判空
bool STEmpty(ST* pst)
{assert(pst);//判断数组栈为空//1、如果top是指向栈顶元素的下一个位置那当top 0时栈为空//2、如果top时指向栈顶元素那当top -1时栈为空/*if (pst-top 0){return true;}else{return false;}*/return pst-top 0;
}//统计栈内元素个数
int STSize(ST* pst)
{assert(pst);//1、如果top指向栈顶元素的话栈内元素的个数为top1//2、如果top指向栈顶元素的下一个位置的话栈内元素的个数为topreturn pst-top;
}bool isValid(char* s) {//同一个域里面不能有同一个变量ST st;STInit(st);while(*s){//遍历字符串//如果是左括号就入栈if(*s [ || *s ( || *s {){STPush(st,*s);s;}else{//右括号多左括号少的数量匹配问题if(STEmpty(st)){STDestory(st);return false;}//如果是右括号就从栈中取出一个左括号来进行匹配char top STTop(st);STPop(st);//顺序不匹配if((*s } top ! {) || (*s ] top ! [)|| (*s ) top ! ()){STDestory(st);return false;}s;}}//栈为空返回真说明数量匹配//匹配问题左括号多右括号少bool ret STEmpty(st);STDestory(st);return ret;
} 总结
好了本篇博客到这里就结束了如果有更好的观点请及时留言我会认真观看并学习。不积硅步无以至千里不积小流无以成江海。