场景分析
我们要求在输入一串算术表达式之后,点击计算按钮,可以直接输出该算术表达式的结果;
例如我们输入2 *3 * 3-1 ,要想获得结果,计算机是怎么理解这个算式(因为计算机拿到的就是一串字符串)的?
我们需要对该字符 串进行拆分,然后还需要判断哪些地方先运算,哪些地方后运算;
为了解决类似这样的问题,我们就需要使用到栈;
基本介绍
1.栈(stack)是一个先入后出的有序列表;
2.栈是为了限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊性表,允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom);因此我们可以将栈的结构理解为一口井;
3.根据上面栈的定义可以知道,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除;
结构图

如上图所示,入栈(push)是从下往上添加的;

而出栈(pop),则是从上往下取的;
应用场景
1.子程序的调用

文章介绍了如何使用栈来解析和计算算术表达式,通过先将中缀表达式转换为后缀表达式,然后利用栈的特性进行计算。栈在这里主要负责存储数据和运算符,根据运算符的优先级决定何时进行运算。在计算过程中,遇到数字时压入数栈,遇到运算符时根据优先级规则决定是否进行运算。最后,栈中只剩下一个数字,即为表达式的结果。
最低0.47元/天 解锁文章
690

被折叠的 条评论
为什么被折叠?



