2 immicheal IMmicheal 于 2016.03.31 21:02 提问

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
caozhy   Ds   Rxr 2016.03.31 23:32
已采纳
 System.out.println("元素"+stack.pop()+"出栈");
这句话本身会让栈顶出栈
换成
System.out.println("元素"+stack.peek()+"出栈");
IMmicheal
IMmicheal 谢谢!!
一年多之前 回复
CSDNXIAOS
CSDNXIAOS   2016.03.31 21: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,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!