1 分析
要求用两个栈模拟队列,假设使用功能栈A和栈B来模拟队列Q,A为插入栈,B为弹出栈,以实现队列Q。
假设栈A和栈B都为空栈,可以认为A栈提供进队的功能,B栈提供出队的功能。出队需要考虑一下两种情况:
1) 如果栈B不为空,则直接弹出B的数据。
2) 如果栈B为空,则一次的弹出A的数据放入B中,在弹出栈B的数据
2 代码实现
package Stack;
import java.util.Stack;
public class myStack1<T> {
private Stack<T> A=new Stack(); //入栈
private Stack<T> B=new Stack();
//入栈
void push(T item){
A.push(item);
}
//出栈
T pop(){
if (B.empty()){
while (!A.empty()){
B.push(A.peek());
A.pop();
}
}
T p=B.peek();
B.pop();
return p;
}
public static void main(String[] args) {
myStack1<String> myStack1=new myStack1<String>();
myStack1.push("4");
myStack1.push("q");
System.out.println("队列首元素"+myStack1.pop());
System.out.println("队列首元素"+myStack1.pop());
}
}