自己实现集合框架(十二):顺序栈的实现
2017-06-06 00:00
351 查看
一. 点睛
1. 什么是顺序栈?
对于栈的概念请参考文章自己实现集合框架(十一):栈接口定义,那么什么是顺序栈呢?顺序栈指采用顺序储存结构储存数据元素的栈,比如采用数组来存放数据元素。栈有其固有的特点:只能在栈顶进行操作,后进先出等。那么数据元素在入栈出栈的过程中,顺序栈及其状态变化是怎么样的呢?例如,要操作的数据元素是A,
B,
C,
D四个元素,执行操作的是:
入栈——>入栈——>出栈——>入栈——>入栈——>出栈——>出栈——>出栈。
栈的状态变化过程如下图所示:
二. 顺序栈实现
1. 定义顺序栈
顺序栈类SeqStack实现栈接口
SStack,并实现栈接口中定义的方法,栈接口的定义参考前面文章自己实现集合框架(十一):栈接口定义,代码如下所示:
代码解释:
1. 定义了两个构造函数,一个无参的构造函数,栈的容量默认是16,另外一个有参的构造函数,可以指定栈的容量。
2.
Math.abs(capacity)取栈容量的绝对值,做容错处理,防止传入负数的情况。
2. 判断栈是否为空
代码解释:
判断栈是否为空的条件是根据栈顶元素的索引top是否为
-1作为依据。
3. 入栈
4.出栈
5. 取栈顶元素
6.重写toString()
方法
代码解释:
返回栈中各元素的字符串表示,从栈顶开始遍历到栈底元素结束。三. 测试
运行结果如下图所示:
四.时间复杂度分析
由于栈只能在栈顶位置进行插入和删除,所以入栈push(),出栈
pop()和获取栈顶元素
get()的时间复杂度为
O(1),当需要扩充容量时,入栈操作
push()的时间复杂度为
O(n)。
五.源代码示例
相关文章推荐
- 自己动手实现集合框架类(三)之HashMap
- 自己动手实现集合框架类(一)之ArrayList
- 自己实现集合框架(七):带头结点单链表的实现
- 自己动手实现集合框架类(四)之LinkedHashMap
- 自己实现集合框架(十三):链式栈的实现
- (4.6.22.3)来吧,是时候撸一份自己的RxJava框架啦:装饰器模式实现操作符顺序调用
- 自己实现集合框架(十):双链表的实现
- 自己实现集合框架(五):利用单链表解决约瑟夫环问题
- java8集合框架LinkedList类实现自己简单的理解
- 自己实现集合框架(十一):栈接口定义
- 自己实现集合框架(八):可排序单链表的实现
- 自己实现集合框架(九):循环单链表的实现
- [JAVA]集合框架之自己实现一个具有基本增查删改功能的ArrayList
- 自己实现的集合框架
- 自己实现集合框架(六):实现单链表逆转
- 集合框架_用LinkedList实现栈结构的集合代码、LinkedList模拟栈数据结构的集合并测试案例
- 构建自己的C/C++插件开发框架(四)——核心层设计和实现
- 【java集合】自己实现简易的HashSet
- 编写自己rpc框架——java rpc的实现
- 打造自己php的开发框架--php的MVC简单实现