题目:
用两个栈来实现一个队列,完成队列的appendTail和deleteHead操作。 队列中的元素为int类型。
解题思路:
每次push是时先将stack2清空放入stck1(保证选入的一定在栈底),stack2始终是用来删除的。在pop前,先将stack1中中的数据清空放入stack2(保存后入的在栈底),stack1始终用于push。
代码如下:
import java.util.Stack;
public class test {
static Stack<Integer> stack1 = new Stack<Integer>();
static Stack<Integer> stack2 = new Stack<Integer>();
public static void appendTail(int target) {
stack1.add(target);
}
public static int deleteHead() {
if(stack1.isEmpty() && stack2.isEmpty()) {
return -1;
}
if(stack2.empty()) {
while(!stack1.isEmpty()) {
stack2.add(stack1.pop());
}
return stack2.pop();
}else {
return stack2.pop();
}
}
public static void main(String[] args) {
test.appendTail(3);
test.appendTail(6);
test.appendTail(2);
System.out.println(test.deleteHead());
}
}