ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

栈(stack)

2021-02-27 13:04:26  阅读:187  来源: 互联网

标签:后缀 栈顶 运算符 当前 stack 表达式 op


1.什么是栈

栈是 OI 中常用的一种线性数据结构,栈的修改是按照后进先出的原则进行的,因此栈通常被称为是后进先出(last in first out)表,简称 LIFO 表。


2.基本操作

1.初始化
2.判空
3.求栈中实际元素个数
4.进栈
5.出栈
6.取栈顶元素

yI38t1.png

此处只给出了其中三步骤

3.实用代码

stack <数据类型> 栈名//初始化
s.top()//返回栈顶
s.empty()//返回是否为空
s.size()//返回元素数量
s.push()//插入传入的参数到栈顶
s.pop()//弹出栈顶

注意:这些函数都需要在头文件stack下

4.举个例子

比如说A题---------后缀表达式求值

题目描述

不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行,不再考虑运算符的优先规则,如:(2 + 1) * 3 , 即2 1 + 3 。这样的表达式称为后缀表达式,也叫逆波兰表达式。它是为了方便在计算机中进行表达式求值而出现的。给出一个仅由整数 、+、-、、/等组成的后缀表达式,符号之间用空格分开,计算它的值。"/" 表示整除。

输入格式

第1行:1个字符串,即后缀表达式。

输出格式

第1行:1个整数,表示运算结果。

样例输入

2 1 + 3 *

样例输出

9


思路及题解

yI8Iqe.png

1.数字直接保存进后缀表达式

2.操作符需要判断

(1)栈空则入栈;

(2)栈非空则比较当前op和栈顶op的优先级

当前‘(’大于所有栈顶op;
    当前‘)’等于栈顶'(',小于其它栈顶op;
    当前op与栈顶op同级时,当前op小于栈顶op;
    当前op是+-小于栈顶/
    当前op是
/大于栈顶+-

(3)判断结果做处理

大于:当前op入栈

等于:此时为左右括号相遇,将栈顶op弹出且当前op不作处理

小于:栈顶op出栈并且存入后缀表达式,当前op继续与新的栈顶op比较。


题解见

下载链接

标签:后缀,栈顶,运算符,当前,stack,表达式,op
来源: https://www.cnblogs.com/386tt/p/14455320.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有