算法学习笔记--背包、队列、栈(1)
来源:互联网 发布:linux关闭oracle服务 编辑:程序博客网 时间:2024/06/06 01:16
原文链接:http://blog.csdn.net/u012925804/article/details/69661165
1. 引言
背包、队列和栈其实就是一组对象的集合。他们的不同之处就在于删除、访问和顺序不同。在java中使用泛型和迭代可以方便的使用这些集合。
2. 背包
背包就相当于生活中的背包,目的就是收集元素并迭代便利所有收集到的元素,它没有顺序和删除。平时在一些与计算顺序和结果无关的场景下可以使用,在java中使用foreach便利所有元素。
3.队列
先进先出,就像生活中的排对,这是一种很公平的方式,这种规则就是优先服务于先进入队列中的人。
4. 下压栈
后进先出,就像放在桌子上的邮件,人们总是先去拿最上面的一个,在电子邮件中也是这样,后面来的总是放到最上面,我们也是从上面开始阅读。
有一个平时生活中用到的例子,在我们浏览网页的时候,我们一直点一个网站的链接,那么这个链接就会压入栈中,当我们按回退的时候,我们打开的总是刚刚打开过的页面,这就是栈的使用。在java中foreach遍历迭代的栈中的元素时,访问的顺序正好和他被压入栈的顺序相反。
4.1应用
算术表达式求解,算术表达式求解的时候一共会有两个栈,流程如下:
从左向右压栈。
1. 遇到操作数的时候将操作数压入操作数栈;
2. 遇到操作符的时候将运算符压入运算符栈;
3. 忽略左括号;
4. 在遇到右括号时,弹出一个运算符,弹出所需要数量的操作数,把计算结果压入操作数栈,然后重复这几个步骤,直到最后一个右括号,把最终结果压入操作数栈。
5. 引用
1. 《算法》--Robert Sedgewick
0 0
- 算法学习笔记--背包、队列、栈(1)
- 算法学习[二]:API——背包,队列,栈
- 算法学习笔记(二)——队列、栈、链表
- 算法#07--背包、队列和栈(链表实现)
- 背包问题学习笔记(1)
- 数据结构与算法学习笔记:栈与队列
- [算法学习笔记]数据结构之栈和队列
- 算法学习笔记 第2章 栈、队列、链表
- 通用链表/栈/队列-算法学习笔记十六
- 算法分析学习笔记(二) - 栈和队列(上)
- 算法分析学习笔记(二) - 栈和队列(下)
- 【数据结构与算法学习笔记】PART3 线性结构(除向量外,数组、栈、队列、链表)
- (Basic algorithm学习笔记)《基础算法二》- 队列、栈、链表
- 算法导论学习笔记 6.5 优先队列
- |算法讨论|单调队列 学习笔记
- java算法学习笔记--队列结构
- [笔记]算法复习笔记---栈、队列、链表(上)
- [笔记]算法复习笔记---栈、队列、链表(中)
- 快速排序
- SplayTree--BZOJ1500
- malloc(0)会发生什么?
- JMeter自动生成测试Report
- 图像边缘检测、角点特征检测——2017.4.1
- 算法学习笔记--背包、队列、栈(1)
- springboot redis
- 城市问题(dijkstar)
- Hadoop、Zookeeper、Hbase集群安装配置过程及常见问题(一)准备工作
- 重复元素的删除
- lintcode——二叉树的最大深度
- Tarjan 有向图
- JS关于Object定义的两种方式
- 动态规划测试3(test20170406)