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

栈与队列和背包

作者: 天际神游 | 来源:发表于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();
    ...
}

相关文章

  • 栈与队列和背包

    栈 (Stack) 后进先出的策略的集合类型(LIFO) 栈的接口抽象如下: 一些特点: 后进先出(LIFO) p...

  • 背包、栈和队列

    介绍 背包是一种不支持从中删除元素的集合类型,它的目的是帮助用例收集元素并迭代遍历所有收集到的元素,迭代的顺序不确...

  • 背包、队列和栈

    背包、队列和栈 ApI 背包 队列 栈 泛型 集合类的抽象数据类型的一个关键特性是我们应该可以用他们存储任意类型的...

  • 背包、队列和栈

    API介绍 背包 队列 栈 特点及用例 背包 不支持从中删除元素 迭代的顺序不确定且与用例无关 队列 先进先出(F...

  • 背包、队列和下压栈

    排着队,背着包,一个一个向下压。 没错,今天就来讲一讲我们的三种数据结构类型,分别是背包、队列和下压栈。 首先向大...

  • 算法学习笔记-基础开篇

    算法定义 基础问题 三种基础的抽象数据类型:背包、队列、栈 用数组、变长数组、链表实现背包、队列、栈的api。 数...

  • Java 之背包、队列和栈

    夜深了,宿舍里,桌子上的杯子和勺子开始攀谈起来…… 「杯子杯子,我看主人今天一直在忙着写程序啊!」勺子说道。 「是...

  • 实 验 四 栈和队列

    一、实验目的与要求:## 1、理解栈和队列抽象数据类型。 2、掌握栈和队列的存储结构和操作实现。 3、理解栈和队列...

  • Swift 队列&栈 相关操作

    栈 LIFO(后进先出) 队列 FIFO(先进先出) 队列与栈相互的实现 栈 - 队列实现 队列 - 栈实现 相关...

  • 数据结构——栈和队列

    用数组实现栈和队列 用栈实现队列 用队列实现栈 栈和队列的经典算法题最小间距栈宠物收养所 数组实现栈和队列 用数组...

网友评论

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

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