• 用栈实现队列


    正如标题所述,你需要使用两个栈来实现队列的一些操作。

    队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。

    pop和top方法都应该返回第一个元素的值。

    比如push(1), pop(), push(2), push(3), top(), pop(),你应该返回1,2和2

    思路:

    1、push元素时,直接进栈stack1

    2、pop或top时,判断stack2是否为空,若为空,将stack1中的元素逆序插入stack2。然后返回stack2.pop()  或 stack2.peek()。

    知识点:

    栈是Vector的一个子类,它实现了一个标准的后进先出的栈。堆栈只定义了默认构造函数Stack(),用来创建一个空栈。 堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。

    1、empty():测试堆栈是否为空

    2、push(element):将项压入堆栈顶部

    3、top():移除堆栈顶部的对象,并作为此函数的值返回该对象

    4、peek():查看堆栈顶部的对象,但不从堆栈中移除

    5、search():返回对象在堆栈中的位置,以1为基数。

    代码:

    public class MyQueue {
        private Stack<Integer> stack1;
        private Stack<Integer> stack2;
        public MyQueue() {
            // do intialization if necessary
            stack1 = new Stack<Integer>();
            stack2 = new Stack<Integer>();
        }

        /*
         * @param element: An integer
         * @return: nothing
         */
        public void push(int element) {
            // write your code here
            stack1.push(element);
        }
        /*
         * @return: An integer
         */
        public int pop() {
            // write your code here
            if(stack2.empty()){
                while(!stack1.empty()){
                    stack2.push(stack1.pop());
                }
            }
            return stack2.pop();
        }

        /*
         * @return: An integer
         */
        public int top() {
            // write your code here
            if(stack2.empty()){
                while(!stack1.empty()){
                    stack2.push(stack1.pop());
                }
            }
            return stack2.peek();
        }
    }

  • 相关阅读:
    大物—⑦热力学基础1
    组原——③系统总线
    组原——①计算机系统概论
    递归
    字符串
    Linux下安装glibc-2.14,解决“`GLIBC_2.14' not found”问题
    libc.so.6被删除修复ln: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
    正则表达式高级用法(分组与捕获)
    查看Android应用包名、Activity的几个方法
    logcat随笔
  • 原文地址:https://www.cnblogs.com/yanernanfei/p/7650313.html
Copyright © 2020-2023  润新知