增加一个最小值栈用来存放最小值
package LinkList;
public class StackgetMin extends StackByArray{
StackByArray stackMin = new StackByArray();
int min = 100000;
public StackgetMin(){
}
public StackgetMin(int len){
super(len);
}
public void push(int a){
super.push(a);
min = Math.min(getTop(), min);
stackMin.push(min);
}
public int pop(){
stackMin.pop();
return super.pop();
}
public int getMin(){
int a = stackMin.getTop();
System.out.println("栈中最小值为:" + a);
return a;
}
public static void main(String[] args) {
StackgetMin stackgetMin = new StackgetMin();
stackgetMin.push(3);
stackgetMin.stackPrint();
stackgetMin.getMin();
stackgetMin.push(8);
stackgetMin.stackPrint();
stackgetMin.getMin();
stackgetMin.push(5);
stackgetMin.stackPrint();
stackgetMin.getMin();
stackgetMin.push(6);
stackgetMin.stackPrint();
stackgetMin.getMin();
stackgetMin.push(7);
stackgetMin.stackPrint();
stackgetMin.getMin();
stackgetMin.push(3);
stackgetMin.stackPrint();
stackgetMin.getMin();
stackgetMin.push(2);
stackgetMin.stackPrint();
stackgetMin.getMin();
stackgetMin.push(1);
stackgetMin.stackPrint();
stackgetMin.getMin();
stackgetMin.push(0);
stackgetMin.stackPrint();
stackgetMin.getMin();
}
}
输出
打印栈中元素
栈顶
| 3 |
栈底
栈中最小值为:3
打印栈中元素
栈顶
| 8 |
| 3 |
栈底
栈中最小值为:3
打印栈中元素
栈顶
| 5 |
| 8 |
| 3 |
栈底
栈中最小值为:3
打印栈中元素
栈顶
| 6 |
| 5 |
| 8 |
| 3 |
栈底
栈中最小值为:3
打印栈中元素
栈顶
| 7 |
| 6 |
| 5 |
| 8 |
| 3 |
栈底
栈中最小值为:3
打印栈中元素
栈顶
| 3 |
| 7 |
| 6 |
| 5 |
| 8 |
| 3 |
栈底
栈中最小值为:3
打印栈中元素
栈顶
| 2 |
| 3 |
| 7 |
| 6 |
| 5 |
| 8 |
| 3 |
栈底
栈中最小值为:2
打印栈中元素
栈顶
| 1 |
| 2 |
| 3 |
| 7 |
| 6 |
| 5 |
| 8 |
| 3 |
栈底
栈中最小值为:1
打印栈中元素
栈顶
| 0 |
| 1 |
| 2 |
| 3 |
| 7 |
| 6 |
| 5 |
| 8 |
| 3 |
栈底
栈中最小值为:0