conanan's blog conanan's blog
首页
关于
  • 分类
  • 标签
  • 归档
  • Java
  • Java Web
  • 工具

    • Maven
  • MySQL
  • Redis
  • Git
  • Vim
  • Nginx
  • Docker
GitHub

Evan Xu

前端界的小学生
首页
关于
  • 分类
  • 标签
  • 归档
  • Java
  • Java Web
  • 工具

    • Maven
  • MySQL
  • Redis
  • Git
  • Vim
  • Nginx
  • Docker
GitHub
  • 基础

  • API

  • Container

    • 6 Container-1 数据结构
      • 栈
      • 队列
      • 数组
      • 链表
      • 散列集
      • 红黑树
    • 6 Container-2 Collection
    • 6 Container-3 List
    • 6 Container-4 Set
    • 6 Container-5 Queue
    • 6 Container-6 Map
    • 6 Container-7 Collections
    • 6 Container-9 新API
    • 2 Object Orientation-5 范型
    • 6 Container-习题
  • 多线程

  • 16 9,10,11新特性
  • 17 Test
  • 18 设计原则&设计模式
  • JDBC
  • Java
  • Container
conanan
2020-12-14

6 Container-1 数据结构

# 数据结构

# 栈

  • 栈(stack):又称堆栈,它是运算受限的线性表,其限制是仅允许在栈的一端进行插入和删除操作,不允许在其他任何位置进行添加、查找、删除等操作。

    • 后进先出(LIFO)。例如,弹夹,浏览器回退

    • 栈的入口、出口的都是栈的顶端位置。

  • 压栈:就是存元素。

  • 弹栈:就是取元素。

# 队列

  • 队列(queue):简称队,它同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。
    • 先进先出。例如,小火车过山洞,车头先进去,车尾后进去;车头先出来,车尾后出来。
    • 队列的入口、出口各占一侧。例如,下图中的左侧为入口,右侧为出口。

# 数组

  • 数组(Array):是有序的元素序列,数组是在内存中开辟一段连续的空间,并在此空间存放元素。
    • 查询快:通过索引,可以快速访问指定位置的元素。
    • 增删慢:需要把增删元素后面的元素移位。Java 中利用的是System.copyArray(...)

# 链表

  • 链表(linked list):由一系列结点(node)组成,包括:存储数据元素的数据域(date),存储后继结点地址(next)的指针域。Java 中所有链表都是双向链表,即每个结点还存放着前驱结点的地址(previous)。
    • 查找慢:想查找某个元素,需要通过连接的节点,依次向后查找指定元素。
    • 增删快:只需要修改连接下个元素和连接上个元素的地址即可。

# 散列集

# 红黑树

  • 二叉树(binary tree):是每个结点不超过 2 个分支且每个结点只能有一个父节点的有序树 。
  • 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:
    • 若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
    • 若右子树不空,则右子树上所有结点的值均大于它的根结点的值;
    • 左、右子树也分别为二叉排序树;
    • 没有键值相等的节点。
  • 红黑树:是一种自平衡二叉查找树。红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色
    • 约束如下:
      • 根节点是黑色。
      • 节点是红色或黑色。
      • 每个叶节点(NIL 节点,空节点)是黑色的。
      • 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
      • 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
    • 特点:查询速度特别快,趋近平衡树,查找叶子元素最少和最多次数不多于二倍

#

编辑
上次更新: 2021/06/21, 15:45:42
15 Optional
6 Container-2 Collection

← 15 Optional 6 Container-2 Collection→

最近更新
01
线程生命周期
07-06
02
线程安全理论
06-24
03
并发简史
06-24
更多文章>
Theme by Vdoing | Copyright © 2019-2021 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×