集合中常用的数据结构

集合中常用的数据结构

一)、栈

栈的特点:先进后出

二)、队列

队列的特点:先进先出

三)、数组

数组的特点:查询快,增删慢

查询快的原因:数组的地址连续,通过地址可以找到数组,通过索引可以找到元素。
如:一个班的学生按学号排列在一起,你想找一个同学,通过学号你很快就能找到

增删慢的原因:增删需要做3个动作
1. 在堆中新建一个数组,用于存储删除或修改后的数组元素
2. 将原数组的变量指向新的数组
3. 垃圾回收旧的数组

四)、链表

链表的特点:查询慢,增删快

查询慢的原因: 链表的地址不连续,每一次查询都要从头开始
 如:一个班的同学不按学号排列在一起,你要找一个叫小花的学生,你的从头开始 挨个问

增删快的原因:    增删一个原素,你只需要改变节点前后地址的指向即可

链表的分类:
  1. 单向链表
      存储元素和取出元素的顺序可能不一致
  2. 双向链表
     专门有一条链记录元素顺序,是一个有集合

链表节点的组成:
  1. 链表的节点有三部分组成
  2. 自己的地址  数据  下一个节点的地址

五)、红黑树

树的分类:
    1.  二叉树
       特点:分支不超过两个

    2. 排序树/查找树
        特点:左边小,右边大,查询速度快。

    3. *衡树
        特点:左孩子数量 = 右孩子数量

    4. 不*衡树
        特点:左孩子数量 != 右孩子数量
    5. 红黑树
        特点:趋*于*衡树,查询速度快,叶子节点的最大查询次数和最小查询次数不能超过两倍

六)、 红黑树的约束(构造)
1. 节点可以是红色或黑色
2. 根节点是黑色
3. 叶子节点是黑色
4. 红色节点到子节点是黑色的
5. 任何一个节点到每一个叶子节点的所有路径黑色节点数相同

金麟岂能忍一世平凡 飞上了青天 天下还依然
原文地址:https://www.cnblogs.com/Auge/p/11609885.html