剑指-用两个栈实现队列

来源:互联网 发布:互联网共享打印机端口 编辑:程序博客网 时间:2024/06/06 05:24

题目:

用两个栈实现一个队列,请实现在队列尾部插入结点和在队列头部删除结点的功能.

思路:

第一个栈作为插入使用,当需要删除时,将第一个栈中的元素全部导出到第二个栈中,此时,第二个栈顶部的元素就是队列的头部需要删除的结点.

static class CQueue<T> {    Deque<T> stack_1 = new LinkedList<T>();    Deque<T> stack_2 = new LinkedList<T>();    void appendTail(T t) {        stack_1.push(t);    }    T deleteHead() {        //  若第二个栈不为空        if (stack_2.isEmpty()) {            while (!stack_1.isEmpty()) {                stack_2.push(stack_1.pop());            }        }        if (!stack_2.isEmpty()) {            return stack_2.pop();        }        return null;    }}public static void main(String[] args) {//        queue.offer();//        queue.poll();//        stack.push();//        stack.pop()}
0 0
原创粉丝点击