有两种实现方法.
方法1:
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int num) {
stack1.push(num);
}
public int pop() {
Integer mid=null;
//先把stack2里的数据取完,再去stack1拿新数据,这样能保证顺序不乱
if(!stack2.empty()){
re=stack2.pop();
}else{
//stack2没数据了,再去拿可能是stack1刚push进的数据
while(!stack1.empty()){
Integer k=stack1.pop();
stack2.push(k);
}
if(!stack2.empty()){
re=stack2.pop();
}
}
return mid;
}
}
方法2:这个方法不严谨
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.push(node);
}
public int pop() {
while(!stack1.isEmpty()){
Integer k1= stack1.pop();
stack2.push(k1);
}
Integer mid = stack2.pop();
//拿到结果后,需要把stack2的数据再放回去,这是为了保证stack1再push进数据还能够排序;
//但如果栈写在两个类里,如果放回去前stack1被push进了新数据,那顺序就乱了
while(!stack2.isEmpty()){
stack1.push(stack2.pop());
}
return mid;
}
}