IMmicheal
IMmicheal
2016-03-31 13:02
采纳率: 33.3%
浏览 1.6k
已采纳

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空了

    谢谢大家!!!
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • caozhy
    已采纳
     System.out.println("元素"+stack.pop()+"出栈");
    这句话本身会让栈顶出栈
    换成
    System.out.println("元素"+stack.peek()+"出栈");
    
    点赞 评论
  • CSDNXIAOS
    Robot-S 2016-03-31 13:12

    package AlgorithmTest;

    import java.util.ArrayDeque;
    import java.util.Deque;

    /**

    • Created by dell on 2015/10/5. */ public class TwoQueueImplementStackTest { public static void main(String[] ar......
      答案就在这里:用两个队列实现一个栈 JAVA实现
      ----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?
    点赞 评论

相关推荐