栈与队列和背包

2018-08-23  本文已影响0人  天际神游

栈 (Stack)

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


栈的示意图

栈的接口抽象如下:

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

一些特点:

队列 (Queue)

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

队列示意图

队列的接口抽象如下:

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

队列的一些点:

背包(Bag)

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

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

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

猜你喜欢

热点阅读