栈LIFO

1)栈是一种限制插入和删除只能在一个位置上的表。这个位置就是栈顶(top)。普通的清空栈的操作和测试栈是否为空的操作,都是栈的指令系统的一部分。其中我们能对栈直接进行的操作只有基本操作:push(入栈)、pop(出栈)。push相当于插入,而pop相当于把最后插入的元素删除。

一般的模型是,存在某个元素位于栈顶,而该元素是唯一的可见元素。

2)栈的实现:由于栈是一个表,所以任何实现表的方法都能实现栈。那么,ArrayList和LinkedList都支持栈的操作。由于栈的操作是常数时间操作,所以,除非在非常独特的环境下,否则不会出现任何明显的改进。这种独特的方法,一种是链式结构。一种是数组结构。

栈的链表实现:通过在单链表的顶端插入元素来实现push,通过删除表顶端的元素来实现pop操作。top只是考查表顶端元素并返回它的值。

栈的数组实现:模仿的是ArrayList的add操作。与每个栈相关的操作是theArray和topOfStack,对于空栈它是-1.为将某个元素x推入栈中,我们使topOfStack增1,然后将theArray[topOfStack] = x.为了弹出栈元素,我们置返回值为theArray[topOfStack],然后使topOfStack-1.栈很有可能是在计算机科学数组之后最基本的数据结构。

3)后缀表达式

(原式) 4.99*1.06+5.99+6.99*1.06

(后缀表达式)4.99 1.06*5.99+6.99 1.06*

计算这个问题最容易的方法就是使用一个栈。当遇见一个数值时,就把数值压入栈中;当遇到一个符号时,就作用于从栈中弹出的两个数上,再将作用的结果压入栈中。

计算一个后缀表达式,所花费的时间是O(N),因为对输入中的每个元素的处理都是栈的一个操作,相当于是由一些常数时间组起来的时间。注意:当一个后缀表达式给出来时,没有必要知道计算的优先级。

4)中缀到后缀的转换

        这里我们坚持普通的优先级法则

例如:中缀表达式   a+b*c+(d*e+f)*g

后缀表达式   abc*+de*f+g*+3.

栈(LIFO:后进先出)相关推荐

  1. Python数据结构栈,后进先出

    栈,后进先出LIFO

  2. m数据结构 day5 栈:后进先出,只能在表尾插入和删除的线性表

    文章目录 现实应用举例(只要用了先进后出,后进先出思想的都是栈的示例) 栈的抽象数据类型 顺序栈:栈的顺序存储结构,用数组实现 进栈:O(1) 出栈:O(1) 两个同数据类型的栈共享空间:缓解数组长度 ...

  3. python 栈实现_Python 栈(后进先出)

    Python 栈,栈是含有一组对象的容器,支持快速后进先出(LIFO)的插入和删除操作.与列表或数组不同,栈通常不允许随机访问所包含的对象.插入和删除操作通常称为入栈(push)和出栈(pop). 现 ...

  4. 七、数据结构:线性表-栈(后进先出)

    1.栈是一种先进后出的顺序表,和顺序表的区别是:顺序表可以操作任意元素,但是栈只能对栈顶元素进行操作,即后进先出原则. 2.栈的操作就只有入栈和出栈两个. 3.实现入栈和出栈 栈的栈顶用top标识,入 ...

  5. 数据结构之栈(后进先出表)

    栈(Stack)是一种特殊的线性表,其插入和删除操作均在表的一端进行,是一种运算受限的线性表 栈顶(top)是栈中允许插入和删除的一端. 栈底(bottom)是栈顶的另一端 顺序栈: #include ...

  6. STL stack 栈(后进先出)

    #include<iostream> #include<cstdio> #include<stack> using namespace std; int main( ...

  7. 30 WM配置-策略-出库策略3-定义后进先出策略L(LIFO)

    业务背景:出库策略之3 定义后进先出策略,英文缩写LIFO=Last In First Out就是后进先出了.当存储类型的出库策略被设置为L后,表示启用了LIFO后进先出的出库策略,当物料库存出库下架 ...

  8. c语言 栈结构存放数据类型,数据结构——栈的详解

    栈和队列是两种重要的线性结构,从数据结构的角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表的子集.他们是操作受限的线性表,因此,可称为限定性的数据结构.但从数据类型角度看,他们是和线 ...

  9. c语言Inqueue函数用法,C语言用两个栈实现队列(完整版)

    队列是一种 先进先出(first in - first out, FIFO)的数据结构,队列中的元素都从后端(rear)入队(push),从前端(front)出队(pop). 实现队列最直观的方法是用 ...

  10. Java 9 揭秘(16. 虚拟机栈遍历)

    Tips 做一个终身学习的人. 在本章中,主要介绍以下内容: 什么是虚拟机栈(JVM Stack)和栈帧(Stack Frame) 如何在JDK 9之前遍历一个线程的栈 在JDK 9中如何使用Stac ...

最新文章

  1. 图解:什么是Raft算法?
  2. PowerShell 学习笔记——运行命令
  3. Python中lambda表达式学习
  4. 卷进大厂系列之LeetCode刷题笔记:二分查找(简单)
  5. CTFshow php特性 web103
  6. php 调用父类变量,PHP-通过实例化父类访问常量
  7. 适用于IE浏览器及非IE浏览器的xmlhttp脚本
  8. android blowfish加密算法,BlowFish加密算法研究
  9. 单片机C语言任意角度旋转图片,图片任意角度旋转(转)
  10. Houdini 官方HDA SideFX Labs 安装
  11. 【VRP问题】基于模拟退火算法求解带时间窗的车辆路径规划问题VRPTW
  12. 第三方app版本更新 自定义接口协议+自定义对话框+显示进度对话框
  13. 技术管理岗岗位职责总结
  14. python绘制菱形_用python画菱形
  15. 桌面计算机图标双击打不开了,双击打不开图标怎么办 双击打不开图标解决方法【详解】...
  16. 解决华为云服务器没有公网Ip无法上网问题
  17. 从乔布斯卸任看苹果未来三年 会否半途而废?
  18. CSS清除浮动的方法
  19. 如何让tensorflow_datasets加载本地下载的数据集
  20. BetaFlight深入传感设计之四:GPS传感模块

热门文章

  1. 米3从android6降回4,从5G到4G,三个月的思考后我从小米9 pro降级到了小米9T pro
  2. IOS 音乐播放器 (附源码)
  3. 【Redis学习10】好友关注---关注与取关,共同关注及关注推送
  4. 验证码自动识别平台与打码平台的区别
  5. php段子老板,程序员段子 那些关于程序员的段子
  6. window7中出现 你需要权限来执行此操作 的解决方法
  7. HTC Vive开发笔记之手柄震动 转
  8. 无线网络安全——1、WiFi安全基础知识
  9. 2021年烷基化工艺考试试卷及烷基化工艺模拟考试题
  10. js处理null和underfined