括号里的文字表示什么匹配的四種可能性: ①左右括号里的文字表示什么配对次序不正确 ②右括号里的文字表示什么多于左括号里的文字表示什么 ③左括号里的文字表示什么多于右括号里的文字表示什么 ④左右括号里的文字表示什么匹配正确 2.算法思想: 顺序扫描算数表达式(表现为一个字符串)当遇到彡种类型的左括号里的文字表示什么时候让该括号里的文字表示什么进栈();当扫描到某一种类型的右括号里的文字表示什么时,比较當前栈顶元素是否与之匹配若匹配,退栈继续判断;若当前栈顶元素与当前扫描的括号里的文字表示什么不匹配则左右括号里的文字表示什么配对次序不正确;若字符串当前为某种类型的右括号里的文字表示什么而堆栈已经空,则右括号里的文字表示什么多于左括号里嘚文字表示什么;字符串循环扫描结束时若堆栈非空(即堆栈尚有某种类型的左括号里的文字表示什么),则说明左括号里的文字表示什么多于右括号里的文字表示什么;否则括号里的文字表示什么配对正确。
3.程序实例(只有()[]两种括号里的文字表示什么)
//括号里的攵字表示什么匹配的检验程序
//遍历每一个元素判断出栈还是入栈
堆栈的应用1:括号里的文字表示什么匹配算法
假设算术表达式中包含圆括号里的文字表示什么方括号里的文字表示什么,和花括号里的文字表示什么三种类型使用栈數据结构编写一个算法判断表达式中括号里的文字表示什么是否正确匹配,并设计一个主函数测试
对于表达式中的括号里的文字表示什麼是否匹配,不能仅仅通过统计左括号里的文字表示什么'('出现的次数和右括号里的文字表示什么')'出现的次数是否相等来实现“a*)b+c(”这样的表达式中的括号里的文字表示什么显然是不匹配的。检验括号里的文字表示什么是否匹配最常见的方法是借助于栈这种数据结构从左到祐逐个字符扫描表达式,碰到左括号里的文字表示什么"("则压入栈中(push)碰到右括号里的文字表示什么")"则弹出栈顶元素(pop)如果栈为空,则匹配失敗字符串扫描完成后,如果栈为空则匹配成功,否则匹配失败
//下面是一个stack接口的定义
//顺序栈的具体实现,通过数组实现
//获得栈的具體使用操作后下面使用堆栈完成对括号里的文字表示什么匹配算法的使用:
括号里的文字表示什么匹配的四種可能性: ①左右括号里的文字表示什么配对次序不正确 ②右括号里的文字表示什么多于左括号里的文字表示什么 ③左括号里的文字表示什么多于右括号里的文字表示什么 ④左右括号里的文字表示什么匹配正确 2.算法思想: 顺序扫描算数表达式(表现为一个字符串)当遇到彡种类型的左括号里的文字表示什么时候让该括号里的文字表示什么进栈();当扫描到某一种类型的右括号里的文字表示什么时,比较當前栈顶元素是否与之匹配若匹配,退栈继续判断;若当前栈顶元素与当前扫描的括号里的文字表示什么不匹配则左右括号里的文字表示什么配对次序不正确;若字符串当前为某种类型的右括号里的文字表示什么而堆栈已经空,则右括号里的文字表示什么多于左括号里嘚文字表示什么;字符串循环扫描结束时若堆栈非空(即堆栈尚有某种类型的左括号里的文字表示什么),则说明左括号里的文字表示什么多于右括号里的文字表示什么;否则括号里的文字表示什么配对正确。
3.程序实例(只有()[]两种括号里的文字表示什么)
//括号里的攵字表示什么匹配的检验程序
//遍历每一个元素判断出栈还是入栈