开发者社区 问答 正文

java 用两个栈实现队列

看到一个题,是说用栈实现队列的效果,我想的是用两个栈,栈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空了

展开
收起
蛮大人123 2016-06-07 17:09:00 2014 分享 版权
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    System.out.println("元素"+stack.pop()+"出栈");
    这句话本身会让栈顶出栈
    换成
    System.out.println("元素"+stack.peek()+"出栈");

    2019-07-17 19:30:30
    赞同 展开评论
问答分类:
问答地址: