看到一个题,是说用栈实现队列的效果,我想的是用两个栈,栈1输出到栈2,再输出,大家帮我看一下,这个程序的最后输出怎么是[b,1],输入的3哪去了?
import java.util.Enumeration;
import java.util.Stack;
public class mockFIFO {
public static void main(String[] args) {
// TODO Auto-generated method stub
Stack stack = new Stack<>();
Stack stack2 = new Stack<>();
System.out.println("1,b,3.3,先让这三个元素入栈");
stack.push(new Integer(1));
stack.push("b");
stack.push(new Integer(3));
String s= new String("b");
System.out.println("1的位置"+stack2.search(1));
System.out.println("b的位置"+stack2.search("b"));
System.out.println("3位置"+stack2.search(3));
// System.out.println("1,b,3.3 三个元素出栈");
System.out.println("元素"+stack.pop()+"出栈");
printStack(stack,stack2); //显示栈中的所有元素
System.out.println("元素"+stack.pop()+"出栈");
printStack(stack,stack2); //显示栈中的所有元素
System.out.println("元素"+stack.pop()+"出栈");
printStack(stack,stack2); //显示栈中的所有元素
printStack(stack,stack2);
}
private static void printStack(Stack stack ,Stack stack2) {
// TODO Auto-generated method stub
if(stack2.size()<=0){
while (!stack.isEmpty()){
for(int i=0; i<stack.size();i++){
stack2.push(stack.pop());
}
}
System.out.println("栈1到栈2");
System.out.println("栈1元素::"+stack);
System.out.println("栈2元素::"+stack2);
}
if(stack.size()==0){
System.out.println("栈1空了");
}
if(stack2.size()==0){
System.out.println("栈2空了");
}
}
}
//以下是输出
1,b,3.3,先让这三个元素入栈
1的位置-1
b的位置-1
3位置-1
元素3出栈
栈1到栈2
栈1元素::[]
栈2元素::[b, 1]
栈1空了
谢谢大家!!!