一、栈
栈 :stack又称堆栈,它是运算受限的线性表,其限制是仅仅允许在栈的一端进行插入和删除操作,不允许在其他任何位置进行添加、查找、删除等操作
先进后出:如:子弹压进弹夹 栈的入口、出口都是在栈的顶端位置
二、队列
队列:queue 简称队,它同堆栈一样,是一种受限制的线性表,其限制仅允许在表的一端进行插入,而在另一端进行删除
先进先出、对垒的入口出口各自占一侧
三、数组
数组 :Array 是有序的元素序列,数组是在内存中开辟的一段连续的空间,并在此空间存放元素。就像一排出租屋,有以100个房间,从001每个房间都有固定的编号,通过编号就可以开始于找到租房子的人。
查找元素快:通过索引可以快速访问指定位置的元素
增删元素慢:指定索引位置增加元素需要创建一个新数组,将指定元素存储在指定元素索引位置,再把原数组元素根据索引,复制到新数组对应的位置。
四、链表
链表: linked list由一系列node(链表中每一个元素称为结点)组成,结点可以在运行时动态生成,每个结点包括两个部门:一个存储数据元素的数据域,另一个存储下一个结点地址的指针域。
查找慢: 想查找某个元素,需要通过连接的结点,依次向后查找指定元素
增删元素快:增加元素只需要蟹盖连接下个元素的地址即可
五、红黑树
1、红黑树:
特点 趋近于平衡树,查询速度非常快,查询叶子节点最大次数和最小次数不能超过2倍
2、约束
(1)节点可以是红色的或者黑色的
(2)根节点是黑色的
(3)叶子节点(空节点)是黑色的
(4)每个红色节点的子节点都是黑色的
(5)任何一个节点到其每一个叶子节点的所有路径黑色节点数相同