zoukankan      html  css  js  c++  java
  • 数据结构的抽象数据类型描述

    • 数组: 有序的元素序列,将有限个元素按顺序排列的集合。
    • 链表:有序的元素序列,但不同于数组,链表在内存中不是连续存放的,通过指针指向下一个元素。
    • :一种操作受限制的线性表,其限制是仅能在一端进行插入和删除。新添加的元素会被保存到栈顶,称为入栈,删除的时候移除栈顶的第一个元素,称为出栈。后进先出。
    • 队列: 一种操作受限制的线性表,其限制是仅能在前端进行删除,后端进行插入。先进先出。
    • 二分搜索树: 一种具有层次结构的有限集合。每个结点都有左右结点,比结点大的在结点右边,比结点小的在结点左边。这样的特点使得查找效率很高效。
    • 集合:由一堆无序的、 不重复的元素组成的集合。
    • 映射:通过<键,值>方式存储数据,每个元素都有<键,值>,通过键访问元素。
    • :特殊的树形结构。最大值在根,每个父节点都比子节点大,称为最大堆;根是最小值,每个父节点都比子节点小,称为最小堆。
    • 优先队列:一种特殊的队列,其特殊之处是根据优先级出队,而不是先进先出。
    • 前缀树:n叉树结构,通过字符寻找下一个节点。
    • 并查集:集合与集合之间的运算。比如两个元素是否同一个集合;合并集合;
    • 哈希表:类似映射。不同之处是:将key通过哈希函数转成数字索引,再去访问数组的元素。
    • :由n(n ≥ 0)个结点 组成的集合。每个结点都可以指向其他结点。

    javascript 描述
    java 描述
    动画描述


    数组

    类型名称: 数组 。
    数据对象集: n(n ≥ 0)个元素构成的有序序列 。
    操作集: 整数i表示位置,ElementType 为元素类型。

    1. 查找元素:int find( ElementType e)
    2. 插入元素:void insert(int i, ElementType e)
    3. 删除元素:ElementType remove(int i)
    4. 更新元素:void set(int i, ElementType e)
    5. 访问元素:ElementType get(int i)
    6. 返回长度:int length()
      数组

    链表

    类型名称: 链表。
    数据对象集: n(n ≥ 0)个结点构成的有限集合,每个结点带有指向下一个元素的指针
    操作集: 整数 i 表示位置,ElementType 为元素类型。

    1. 添加元素:void insert(int i, ElementType e)
    2. 删除元素:ElementType remove(int i)
    3. 查找元素:int find(ElementType e)
    4. 更新元素:void set(int i, ElementType e)
    5. 访问元素:ElementType get(int i)
    6. 链表元素数量: int length()

    链表


    类型名称: 栈。
    数据对象集: n(n ≥ 0)个构成的有序序列元素。
    操作集: ElementType 为元素类型。

    1. 入栈:void push(ElementType e)
    2. 出栈:ElementType pop()
    3. 栈顶元素:ElementType peek()
    4. 元素数量:int length()
      栈

    队列

    类型名称: 队列。
    数据对象集: n(n ≥ 0)个构成的有序序列元素。
    操作集: ElementType 为元素类型。

    1. 进队:enqueue(ElementType e)
    2. 出队:ElementType dequeue()
    3. 队首:ElementType front()
    4. 是否空:boolean isEmpty()
    5. 元素数量:int length()
      队列



    集合

    类型名称: 集合。
    数据对象集: n(n ≥ 0)个元素构成的有限集合。
    操作集: ElementType 为元素类型。

    1. 添加:void add(ElementType e)
    2. 删除:ElementType remove(ElementType e)
    3. 是否包含某个元素:boolean contains(ElementType e)
    4. 是否为空:boolean isEmpty()
    5. 长度:int length()
      集合



    映射

    类型名称: 映射。
    数据对象集: 每个元素都有<键,值>,通过键访问元素
    操作集: KeyType 为键类型,ValueType 为值类型。

    1. 添加:void add(KeyTpe key, ValueType value)
    2. 访问:ValueType get(KeyType key)
    3. 修改:void set(KeyTpe key, ValueType value)
    4. 删除:ValueType remove(KeyType key)
    5. 元素数量:int length()
      映射



    二分搜索树

    类型名称: 二分搜索树。
    数据对象集: n(n ≥ 0)个结点构成的有限集合,每个结点都有左右指针指向它的子节点
    操作集: ElementType 为元素类型。

    1. 插入:void insert(ElementType e)
    2. 删除:remove(ElementType e)
    3. 查找:ElementType find(ElementType e)
    4. 前序遍历:void preOrder()
    5. 中序遍历:void preOrder()
    6. 后序遍历:void preOrder()
    7. 层序遍历:void levelOrder()
    8. 结点数量:int size()
      二分搜索树



    前缀树

    类型名称: 前缀树。
    数据对象集: 每个节点都有一个指针指向下一个,通过字符寻找下一个节点。
    操作集: 默认为处理字母字符。

    1. 添加单词:void add(String word)
    2. 查询是否有某个单词:boolean contains(String word)
    3. 是否包含某个前缀:boolean isPrefix(String prefix)
    4. 单词数量:int size()
      前缀树



    类型名称: 最大堆。
    数据对象集: n(n ≥ 0)个结点构成的有限集合,通过索引关系访问父节点以及左右结点
    操作集: ElementType 为元素类型。

    1. 添加:void add(ElementType e)
    2. 删除堆顶元素:ElementType remove(ElementType e)
    3. 获取堆顶元素:ElementType get()
    4. 元素数量:int lenght()
      堆



    优先队列

    类型名称: 优先队列。
    数据对象集: n(n ≥ 0)个构成的有序序列元素
    操作集: ElementType 为元素类型。

    1. 进队:enqueue(ElementType e)
    2. 出队:ElementType dequeue()
    3. 队首:ElementType front()
    4. 是否空:boolean isEmpty()
    5. 元素数量:int length()
      在这里插入图片描述



    并查集

    类型名称: 并查集。
    数据对象集: 元素 或 集合。
    操作集: ElementType 为元素类型 。

    1. 是否同一个集合:boolean isConnected(ElementType p, ElementType q)
    2. 合并集合:void unionElement(ElementType p, ElementType q)
      并查集



    哈希表

    类型名称: 哈希表。
    数据对象集: 有<键,值>的元素。
    操作集: KeyType 为键类型,ValueType 为值类型。

    1. 添加:void add(KeyTpe key, ValueType value)
    2. 访问:ValueType get(KeyType key)
    3. 修改:void set(KeyTpe key, ValueType value)
    4. 删除:ValueType remove(KeyType key)
    5. 哈希函数:int hashCode(key)
    6. 元素数量:int size()
      哈希表



    类型名称: 图。
    数据对象集: 结点。每个节点都可以指向其他结点。
    操作集: ElementType 为元素类型 。

    1. 是否包含某个点:boolean contains(ElementType v)
    2. v1点到v2点是否连通:boolean isConnected(ElementType v1, ElementEtype v1)
    3. 添加点:void addVertex(ElementType v)
    4. 添加线:void addEdge(ElmentType v1, ElmentType v2)
    5. 删除点:ElementType removeVertex(v)
    6. 删除线:void removeEdge(ElementType v1, ElementType v2)
    7. 获取点的线:Array getEdge(v)
      图
  • 相关阅读:
    我太难了
    树状数组模板
    题解 洛谷P1196 【[NOI2002]银河英雄传说】
    poj 2352 & Ural 1028 数星星 题解
    棋盘覆盖 题解
    2015 JSOI冬令营训练 彩色格子 题解
    题解 UVA12716 GCD等于XOR GCD XOR
    第一篇博客
    2019.8.26 小结
    2019.8.24 小结 (关于树状数组,线段树小结)
  • 原文地址:https://www.cnblogs.com/niepeizhi/p/12068614.html
Copyright © 2011-2022 走看看