java 使用兩個棧實現隊列

public class StackToQueue {
    private static final String TAG  ="StackToQueue";
    public Stack<TestBean> fStack = new Stack<>();
    public Stack<TestBean> sStack = new Stack<>();


    public void insert(TestBean bean){
        fStack.push(bean);
    }

    public TestBean delete(){
        //just print data
        for (int z = 0; z < fStack.size(); z++) {
            //System.out.println(TAG+"--print current fStack--"+fStack.get(z).name);
        }
        //clear sStack
        for (int i = 0; i < sStack.size(); i++) {
            sStack.pop();
        }
        //put data to sStack
        int sizeOrigin = fStack.size();
        for (int i = 0; i < sizeOrigin; i++) {
            sStack.push(fStack.pop());
        }
        //just print data
        for (int z = 0; z < sStack.size(); z++) {
            //System.out.println(TAG+"--to sStack--"+sStack.get(z).name);
        }

        TestBean t = sStack.pop();
        int currentSize = sStack.size();
        for (int i = 0; i < currentSize; i++) {
            fStack.push(sStack.pop());
        }
        //just print data
        for (int z = 0; z < fStack.size(); z++) {
            //System.out.println(TAG+"--to fStack--"+fStack.get(z).name);
        }
        return t;
    }

    public static class TestBean{
        public TestBean(String name) {
            this.name = name;
        }

        String name;
    }


    public static void test(){
        StackToQueue s = new StackToQueue();
        for (int i = 0; i < 4; i++) {
            s.insert(new TestBean(TAG+"index="+i));
        }
        System.out.println(TAG+"======check sStack====");
        for (int i = 0; i < 4; i++) {
            System.out.println(TAG+"=="+s.fStack.get(i).name);
        }
        for (int i = 0; i < 4; i++) {
            System.out.println(TAG+"======delete====");
            System.out.println(TAG+"=s.delete().name="+s.delete().name);
            for (int z = 0; z < s.fStack.size(); z++) {
                System.out.println(TAG+"=="+s.fStack.get(z).name);
            }
        }

    }
}

=====result=====


12-05 14:41:20.870 2727-2727/com.example.bxh.sayhello I/System.out: StackToQueue======check sStack====
12-05 14:41:20.871 2727-2727/com.example.bxh.sayhello I/System.out: StackToQueue==StackToQueueindex=0
12-05 14:41:20.871 2727-2727/com.example.bxh.sayhello I/System.out: StackToQueue==StackToQueueindex=1
12-05 14:41:20.871 2727-2727/com.example.bxh.sayhello I/System.out: StackToQueue==StackToQueueindex=2
12-05 14:41:20.871 2727-2727/com.example.bxh.sayhello I/System.out: StackToQueue==StackToQueueindex=3
12-05 14:41:20.871 2727-2727/com.example.bxh.sayhello I/System.out: StackToQueue======delete====
12-05 14:41:20.871 2727-2727/com.example.bxh.sayhello I/System.out: StackToQueue=s.delete().name=StackToQueueindex=0
12-05 14:41:20.871 2727-2727/com.example.bxh.sayhello I/System.out: StackToQueue==StackToQueueindex=1
12-05 14:41:20.871 2727-2727/com.example.bxh.sayhello I/System.out: StackToQueue==StackToQueueindex=2
12-05 14:41:20.871 2727-2727/com.example.bxh.sayhello I/System.out: StackToQueue==StackToQueueindex=3
12-05 14:41:20.871 2727-2727/com.example.bxh.sayhello I/System.out: StackToQueue======delete====
12-05 14:41:20.871 2727-2727/com.example.bxh.sayhello I/System.out: StackToQueue=s.delete().name=StackToQueueindex=1
12-05 14:41:20.871 2727-2727/com.example.bxh.sayhello I/System.out: StackToQueue==StackToQueueindex=2
12-05 14:41:20.871 2727-2727/com.example.bxh.sayhello I/System.out: StackToQueue==StackToQueueindex=3
12-05 14:41:20.871 2727-2727/com.example.bxh.sayhello I/System.out: StackToQueue======delete====
12-05 14:41:20.871 2727-2727/com.example.bxh.sayhello I/System.out: StackToQueue=s.delete().name=StackToQueueindex=2
12-05 14:41:20.871 2727-2727/com.example.bxh.sayhello I/System.out: StackToQueue==StackToQueueindex=3
12-05 14:41:20.871 2727-2727/com.example.bxh.sayhello I/System.out: StackToQueue======delete====
12-05 14:41:20.871 2727-2727/com.example.bxh.sayhello I/System.out: StackToQueue=s.delete().name=StackToQueueindex=3

==============

可以想象一下,有兩個“直徑比乒乓球略大”的杯子A&B,向A中放進去四個乒乓球,最底下的是0號球,最上面的是3號球,這時候希望取出最底下的乒乓球,即0號球,此時將A中的球“一個一個”地放到B中,放完後,B中最上面的球就是0號球,將其取出來以後,再把B中的球一個一個的放進A中,此時A中最底下的球是1號球,最上面的是3號球。至此,達成取出0號球的目的。so,插入&刪除 就是此過程的往復。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章