用两个stack实现Queue(java)

来源:互联网 发布:sm600模拟器软件下载 编辑:程序博客网 时间:2024/06/17 09:28

刷成功的第一题 打个call

package zuotext;import java.util.Stack;public class QueueText1 {    public static void main(String[] args) {        Queue1 myqueue = new Queue1();        System.out.println("3,2,6,1,9 将进入队中");        myqueue.add(3);        myqueue.add(2);        myqueue.add(6);        myqueue.add(1);        myqueue.add(9);        System.out.println(myqueue.peek());        System.out.println("======");        System.out.println(myqueue.poll());        System.out.println("======");        System.out.println(myqueue.peek());    }}class Queue1 {    // 先创建两个栈 stack1,Stack2    private Stack<Integer> stack1;    private Stack<Integer> stack2;    Queue1() {        this.stack1 = new Stack<Integer>();        this.stack2 = new Stack<Integer>();    }    // 重写queue的add,poll,peek三个函数    // 重写add    // 将指定的元素插入到此队列中,如果可以立即执行此操作而不违反容量限制,    // true在成功后返回 IllegalStateException如果当前没有可用空间,则抛出IllegalStateException。    boolean add(int newNum) {        this.stack1.push(newNum);        return true;    }    public void change() {        while (!this.stack1.isEmpty()) {            int value = this.stack1.pop();            this.stack2.push(value);        }    }    // 重写poll函数    public int poll() {        if (this.stack2.isEmpty()) {            return 0;        } else {            change();            return this.stack2.pop();        }    }    // 重写peek 函数    public int peek() {        change();        if (this.stack2.isEmpty()) {            return 0;        } else {            return this.stack2.peek();        }    }}

测试结果
这里写图片描述

原创粉丝点击