那么大家可能会问一个问题,反正
就是这么一块空间,那我们二一添作五,直接均分不就行了(你好,我好,大家好,一片和
谐,此处应该有掌声)。均分看似合理,其实会导致很大问题,大家请想一下,程序的执行
是不确定的,也是不均衡的(好像说的有点玄乎),有的程序需要的空间大,有的程序需要
的空间小,图(b)中表示的是栈 1 占用的空间的大一些;图(b)中表示的是栈 2 占用的
空间的大一些,如果均分,就会出现旱涝不均,图(b)中栈 1 就会旱死(空间不够,而报
错),图(c)中栈 2 就会旱死(空间不够,而报错)。
5. 括号匹配问题
在文字处理软件或编译程序设计时,常常需要检查一个字符串或一个表达式中的括号是
否相匹配?
匹配思想:从左至右扫描一个字符串(或表达式),则每个右括号将与最近遇到的那个左
括号相匹配。则可以在从左至右扫描过程中把所遇到的左括号存放到堆栈中。每当遇到一个
右括号时,就将它与栈顶的左括号(如果存在)相匹配,同时从栈顶删除该左括号。
算法思想:设置一个栈,当读到左括号时,左括号进栈。当读到右括号时,则从栈中弹
出一个元素,与读到的左括号进行匹配,若匹配成功,继续读入;否则匹配失败,返回 FLASE。
6. 栈与递归调用的实现
栈的另一个重要应用是在程序设计语言中实现递归调用。递归调用:一个函数(或过程)
直接或间接地调用自己本身,简称递归(Recursive)。为了使递归调用不至于无终止地进行下
去,实际上有效的递归调用函数(或过程)应包括两部分:递推规则(方法),终止条件, 初始。
喜欢离语请大家收藏:(www.qibaxs10.cc)离语七八小说更新速度全网最快。