Stack介绍以及设计一个有getMin 功能的栈
来源:互联网 发布:微传单软件 编辑:程序博客网 时间:2024/06/06 01:15
Stack是一个后进先出(last in first out,LIFO)的堆栈,在Vector类的基础上扩展5个方法而来
Deque(双端队列)比起Stack具有更好的完整性和一致性,应该被优先使用
- E push(E item)
- 把项压入堆栈顶部。
- E pop()
- 移除堆栈顶部的对象,并作为此函数的值返回该对象。
- E peek()
- 查看堆栈顶部的对象,但不从堆栈中移除它。
- boolean empty()
- 测试堆栈是否为空。
- int search(Object o)
- 返回对象在堆栈中的位置,以 1 为基数。
Stack本身通过扩展Vector而来,而Vector本身是一个可增长的对象数组( a growable array of objects)那么这个数组的哪里作为Stack的栈顶,哪里作为Stack的栈底?
答案只能从源代码中寻找,jdk1.6:
通过peek()方法注释The object at the top of this stack (the last item of the Vector object,可以发现数组(Vector)的最后一位即为Stack的栈顶
pop、peek以及search方法本身进行了同步
push方法调用了父类的addElement方法
empty方法调用了父类的size方法
Vector类为线程安全类
综上,Stack类为线程安全类(多个方法调用而产生的数据不一致问题属于原子性问题的范畴)
设计一个有getMin 功能的栈
private Stack <Integer> stackData ;private Stack <Integer> stackMin ;public getMinStack(){ this.stackData = new Stack <Integer> (); this.stackMin = new Stack <Integer> ();}public void push(int newNum){ if(stackMin.isEmpty()){ stackMin.push(newNum); }else if(newNum>this.getMin()){ stackMin.push(newNum); } stackData.push(newNum);}public int pop(){ if(stackMin.isEmpty()){ throw new RuntimeException("stack is empty"); } int value= stackData.pop(); if(value==this.getMin()){ stackMin.pop(); } return value;}public int getMin(){ if(stackMin.isEmpty()){ throw new RuntimeException("stack is empty"); } return stackMin.peek();}
阅读全文
0 0
- Stack介绍以及设计一个有getMin 功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有 getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 栈——设计一个有getmin功能的栈
- 栈和队列 设计一个有getMin()功能的栈
- 栈和队列---设计一个有getMin功能的栈
- Java后端与数据库中获取时间间隔的不同方法
- 永久免费!吴恩达刚公布的深度学习课程上线网易云课堂
- 怎么认证微信小程序-微信小程序开发-视频教程2
- 自定义input默认placeholder样式
- 怎样理解阻塞非阻塞与同步异步的区别?
- Stack介绍以及设计一个有getMin 功能的栈
- CAS实现单点登录SSO执行原理探究(终于明白了)
- 栈,队列和双端队列的操作
- Spring Boot入门教程-FreeMarker模板
- Android Studio教程:启动时不自动打开项目
- 我如何从一个异步调用返回响应?
- Linux shell script 1 basic scripts
- Oracle之快速复制表-yellowcong
- 修改kafka_run_class.bat并增加JRE_HOME判断