从零学Java-17 数据结构(集合)

数据结构
  • 栈结构: 先进后出(入口出口在同一侧类似弹夹,最先填装的最后发射出去)

  • 队列: 先进先出 (入口出口分别在集合两侧,类似排队,先排队的先出去)

  • 数组:

    1. 查询快: 数组的地址是连续的,通过数组地址可以找到数组,通过索引可以快速查询某个元素
    2. 增删慢:数组长度固定,要增删一个元素必须创建一个新数组,把源数组复制过来
  • 链表: linked list 由一系列节点 node(链表中每个元素称为节点)组成,节点可以在运行时动态生成,每个节点包括两个部分: 一个是存储数据源的数据域,另一个是存储下一个节点地址的指针域,链表结构有单向链表双向链表

    1. 查询慢: 链表中地址是不连续的,每次查询元素都必须从头开始
    2. 增删快: 链表结构增加/删除一个元素对链表的整体结构没有影响,所以快
    3. 单向链表: 链表中只有一条链子,不能保证元素的顺序(存储和取出元素的顺序可能不一致)
    4. 双向链表: 链表中有两条链子,有一条链子是专门记录元素顺序,是一个有序集合
  • 树:

    1. 二叉树: binary tree 是每个节点不超过2的有序树
    2. 排序树/查找树: 在二叉树的基础上,元素是有大小顺序的,左子树小,右子树大, 查询快
    3. 平衡树: 左之树和右子树相等,不平衡树相反
    4. 红黑树: 特点趋近于平衡树,查询速度非常快,查询叶子节点最大次数和最小次数不超过2倍
      • 节点可以是红色或黑色的
      • 根节点是黑色的
      • 叶子节点(空节点)是黑色的
      • 每个红色的节点的子节点都是黑色的
      • 任何一个节点到每一个叶子节点的所有路径上黑色节点数相同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值