天天看点

java 将一个 Stack(栈)反转

看到  http://bbs.csdn.net/topics/390843046   这里的关于一个栈的问题:

stack的存储方式是:属于线性类型,则存储方式遵循:先进后出,后进先出;

看以下代码及结果:

    public static void main(String[] args) {

        Stack s = new Stack();

        s.add("apple");

        s.add("banana");

        s.add("org");

        s.add("cat");

        while(s.size()>0){

            System.out.println(s.pop());

        }

}

java 将一个 Stack(栈)反转

栈反转:

    public static void reverseStack(Stack s){

        Queue r = new LinkedList();

//r.offer() 是将指定队列插到r中

//s.pop是 移除堆栈顶部的对象,并作为此函数的值返回该对象。

        while(s.size()>0) r.offer(s.pop());

//s.push() 把项压入堆栈顶部。

//r.poll() 获取并移除此队列的头,如果此队列为空,则返回 null。

        while(r.size()>0) s.push(r.poll());

    }

实现的效果:

public static void main(String[] args) {

        //反转一个栈

        Stack s = new Stack();

        s.add("apple");

        s.add("banana");

        s.add("org");

        s.add("cat");

//        while(s.size()>0){

//            System.out.println(s.pop());

//        }

        reverseStack(s);

        while(s.size()>0){

            System.out.println(s.pop());

        }

}

java 将一个 Stack(栈)反转