java 将一个 Stack(栈)反转

来源:互联网 发布:循环倒计时软件 编辑:程序博客网 时间:2024/05/19 14:00

看到  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());
        }

}

栈反转:

    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());
        }

}





0 0