码迷,mamicode.com
首页 > 其他好文 > 详细

栈(stack)

时间:2021-03-01 12:51:40      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:code   实用代码   targe   入栈   lang   bsp   out   alt   输入   

1.什么是栈

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


2.基本操作

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

技术图片

此处只给出了其中三步骤

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


思路及题解

技术图片

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

2.操作符需要判断

(1)栈空则入栈;

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

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

(3)判断结果做处理

大于:当前op入栈

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

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


题解见

下载链接

栈(stack)

标签:code   实用代码   targe   入栈   lang   bsp   out   alt   输入   

原文地址:https://www.cnblogs.com/386tt/p/14455320.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!