美文网首页
栈与队列和背包

栈与队列和背包

作者: 天际神游 | 来源:发表于2018-08-23 22:00 被阅读0次

    栈 (Stack)

    后进先出的策略的集合类型(LIFO)


    栈的示意图

    栈的接口抽象如下:

    interface Stack<E> {
        public void push(E item);     // 添加一个元素
        public E pop();              // 弹出一个元素
        public E peek();           // 观察一下栈顶元素
        public boolean isEmpty();  // 栈是否为空
        int size();              // 查看栈的大小
    }
    

    一些特点:

    • 后进先出(LIFO)
    • pop()与peek()的区别是: pop后的元素将会消失, peek不会.
    • 我们只能看见栈顶的元素, 使用peek查看, 或者pop弹出.
    • 栈的实现我们可以使用数组, 也可以使用链表.

    队列 (Queue)

    先进先出(FIFO), 就像是经过一个管道, 谁先进, 谁先出.
    严格的队列定义我们只能看到队首元素, 要查看其他的元素, 必须一一出队列.

    队列示意图

    队列的接口抽象如下:

    interface Queue<E>{
        void enqueue(E e);  // 添加一个元素
        E dequeue();        // 移除一个队首元素并返回
        E peek();               // 查看一个队首元素并返回
        public boolean isEmpty();  // 栈是否为空
        int size();              // 查看队列大小
    }
    

    队列的一些点:

    • 先进先出(FIFO), 就像是排队, 先到先得
    • 我们只能查看队首元素
    • 队列的实现我们也是可以使用数组, 使用链表的

    背包(Bag)

    背包是一种不支持从中删除元素的集合数据类型.
    用来收集元素. 元素出背包的时候是没有顺序的, 就像背包一样.

    在java中需要为其实现iterable接口, 遍历取出其中的元素.
    其接口定义如下:

    interface Bag<E> Iterable<Item>{
        void add(E e);
        boolean isEmpty();
        int size();
        ...
    }
    

    相关文章

      网友评论

          本文标题:栈与队列和背包

          本文链接:https://www.haomeiwen.com/subject/cncviftx.html