29、栈和队列
来源:互联网 发布:网络组策略 编辑:程序博客网 时间:2024/06/06 09:19
1、栈
栈(Stack)是一种特殊的线性表,只能在固定一端进行插入、删除操作,通常在线性表的尾端进行操作。
从功能上来看,栈比普通线性表的功能更弱;栈是一种被限制过和线性表,只能从栈顶进行操作。
1.1、顺序栈和链栈
存取效率:由于栈不需实现随机存取功能,只需从栈顶插入、删除操作,因此顺序结构所提供的高效存取就没有太大的价值。采用链式结构的实现,程序同样可以高效地出栈、入栈。
空间利用率:链栈内保存几个元素,链式结构就需保存几个节点,每个节点都需额外添加一个next引用,会占用部分空间。对于顺序栈,程序开始就需要在底层开辟一块连续的内存空间(数组),这种空间浪费其实更大。链栈的空间利用率比顺序栈更高。
1.2、JAVA集合中的栈
java.util.Stack:最普通的栈,底层基于数组实现,是线程安全的,在多线程环境下也可放心使用。
java.util.LinkedList:双端链表,也可作为栈(链式)使用。线程不安全,如果需要在多线程环境下使用,则应该使用Collections类的工具方法将其“改造”成线程安全的类。
2、队列
队列(Queue)是另一种被限制过的线性表。只允许在表的前端(front、队头)进行删除操作,在表的后端(rear、队尾)进行插入操作。
2.1、顺序队列和链式队列
顺序队列:顺序队列会存在“假满”的情况,采用循环队列可解决这个问题。
链式队列:链式队列允许添加无限多个数据元素,不存在队列满的问题。
2.2、JAVA集合中的队列
java集合框架中提供了一个Queue接口,该接口代表了一个队列,实现该接口的类可以当成队列使用。
3、双端队列
双端队列(Deque)是Queue的子接口,也是Stack的子接口。因此,Deque既可以当成队列使用,也可当成栈使用。推荐使用Deque实现类作为“栈”使用。
LinkedList也可作为线程安全的、链式结构的双端队列,几乎是java集合框架中方法最多的类。
- 29、栈和队列
- 栈和队列--队列
- 【栈和队列】队列
- 栈、队列和优先队列
- 栈和队列(队列)
- 栈和队列--栈
- 【栈和队列】栈
- 栈和队列
- 栈和队列
- 表、栈和队列
- 栈和队列
- 栈和队列应用
- 栈和队列
- 栈和队列
- 栈和队列
- 栈和队列
- 栈和队列
- 队列和栈
- HTTPS的七个误解(译文)
- iPhone或改善主动对焦功用 让主摄像头更纤薄
- 【剑指offer】二分查找二维数组
- 编译一个可以不依赖vs的release项目
- Linux和UNIX
- 29、栈和队列
- Java抽象类与接口
- IOS 项目开发小技巧
- asterisk1.8 拨号方案 mysql存储(动态)
- Windows 2008 r2 AD域自定义属性
- Conversion to Dalvik format failed with error 1 打包
- win7安装linux系统
- 一个窗口显示多幅图片
- ArcGIS Server 10.1新特性