用JAVA代码实现出栈入栈并获取栈中最小值的程序
来源:互联网 发布:中文版电路仿真软件 编辑:程序博客网 时间:2024/06/05 09:18
【前言】
言归正传,昨晚看到一个有关出栈入栈并获取栈中最小值的案例,机会难得,用java代码实现了下。
要求:实现一个栈,带有出栈(pop),入栈(push),取最小元素(getMin)三个方法
package stacktest;import java.util.Stack;public class Test {/** * @param args */public static void main(String[] args) {Stack<Integer> stack = new Stack<Integer>();Stack<Integer> stackBackUp = new Stack<Integer>();pushStack(stack,stackBackUp,10);pushStack(stack,stackBackUp,7);pushStack(stack,stackBackUp,6);pushStack(stack,stackBackUp,4);pushStack(stack,stackBackUp,8);pushStack(stack,stackBackUp,3);pushStack(stack,stackBackUp,1);pushStack(stack,stackBackUp,2);System.out.println("当前stack:"+stack);System.out.println("stack下标对应的栈:"+stackBackUp);popStack(stack,stackBackUp);System.out.println("第1次移除操作后stack:"+stack);System.out.println("第1次移除操作后stack下标对应的栈:"+stackBackUp);popStack(stack,stackBackUp);System.out.println("第2次移除操作后stack:"+stack);System.out.println("第2次移除操作后stack下标对应的栈:"+stackBackUp);popStack(stack,stackBackUp);System.out.println("第3次移除操作后stack:"+stack);System.out.println("第3次移除操作后stack下标对应的栈:"+stackBackUp);System.out.println("stack中最小值:"+getMin(stack,stackBackUp));}/** * /** * 先进栈: * 1:创建2个栈,一个栈放元素(stack),另外一个栈放元素下标(stakcBackUp) * 2:向stack中放入元素时,先与stakcBackUp顶部元素(代表stack下标)所对应的stack元素比较 * * * @param stack * @param stackBackUp * @param i */public static void pushStack(Stack<Integer> stack,Stack<Integer> stackBackUp,int i){if(stack.isEmpty()){//第一次放进去的值默认最小stack.push(i);stackBackUp.push(0);}else if(stack.get(stackBackUp.peek())<i){stack.push(i);}else{stack.push(i);stackBackUp.push(stack.size()-1);}}/** * 出栈操作 * 先明确:栈的原则(是一种先进后出的集合) * 当从stack中出栈时,先与stackBackUp栈顶元素对应的值进行比较,若相同则说明此时 * stack出战的为最小值,同时将stackBackUp栈顶元素移除 * 反之仅移除stack,stackBackUp不动 */public static void popStack(Stack<Integer> stack,Stack<Integer> stackBackUp){if(stack.peek()==stack.get(stackBackUp.peek())){//System.out.println(11);stackBackUp.pop();stack.pop();}else{stack.pop();}}/** * 3:总结stackBackUp最上面的下标对应的stack中的元素最小 * @param stack * @param stackBackUp * @return */public static int getMin(Stack<Integer> stack,Stack<Integer> stackBackUp){return stack.get(stackBackUp.peek());}}运行结果:
当前stack:[10, 7, 6, 4, 8, 3, 1, 2]stack下标对应的栈:[0, 1, 2, 3, 5, 6]第1次移除操作后stack:[10, 7, 6, 4, 8, 3, 1]第1次移除操作后stack下标对应的栈:[0, 1, 2, 3, 5, 6]第2次移除操作后stack:[10, 7, 6, 4, 8, 3]第2次移除操作后stack下标对应的栈:[0, 1, 2, 3, 5]第3次移除操作后stack:[10, 7, 6, 4, 8]第3次移除操作后stack下标对应的栈:[0, 1, 2, 3]stack中最小值:4
入栈演示:
0 0
- 用JAVA代码实现出栈入栈并获取栈中最小值的程序
- 实现O(1)获取最大最小值的栈----java
- 实现可以获取最小值的栈
- 第四个Java程序,获取浮点类型的最大值和最小值。
- 在自己的java代码中编译并运行程序
- 一行代码实现数组中最大值与最小值的查找
- C++使用两个栈实现一个可以获取栈中最大值和最小值的栈
- Java实现-带最小值的栈
- 编写Java程序,输入3个整数,并求出3个整数的最大值和最小值。
- java 获取数组的最大值和最小值
- 在delphi程序中实现QQ用户的Web登陆并获取个人信息
- 在delphi程序中实现QQ用户的Web登陆并获取个人信息
- 在delphi程序中实现QQ用户的Web登陆并获取个人信息
- 原创:微信小程序java实现AES解密并获取unionId
- 微信小程序java实现AES解密并获取unionId
- 原创:微信小程序java实现AES解密并获取unionId
- java中代码实现获取IP
- excel中vba调用java程序并获取返回值
- Android之---MVP设计模式(项目中的实践)
- java模板设计模式
- express之模板布局
- JOSN简介
- <mvc:annotation-driven />注解意义
- 用JAVA代码实现出栈入栈并获取栈中最小值的程序
- 2016上海某公司面试题
- 跟我一起写 Makefile(十三)
- 关于Mapped Statements collection does not contain value for的错误分析
- 迷之背单词程序(高中wordlist 14)
- 腾讯QQ、新浪微博第三方登录接口申请说明
- 跟我一起写 Makefile(十四)
- vs注释和取消注释快捷键
- JAVA多线程实现的三种方式