介绍:
数据用什么样的方式组合在一起
常见的数据结构
栈、队列、数组、链表、红黑树
栈:
stack,又称堆栈,它是运算受限的线性表,其限制是仅允许在标的一端进行插入和删除操作,不允许在其他任何位置进行添加、查找、删除等操作
简单来说:
采用该结构的集合,对元素的存取有如下的特点
先进后出(即:存进去的元素,要在他后面的元素依次取出后,才能取出该元素)。例如:
子弹压进弹夹,先进的在下面,后压进的在上面
栈的让人口、出口都是栈 的顶端位置
压栈:
就是存元素,即,把元素存储到栈的顶端位置。栈中已有元素依次向栈底方向移动一个位置
弹栈:
就是取元素,即,把栈的顶端位置元素取出,栈中已有元素依次向栈顶方向移动一个位置
队列:
简称队,它同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除
简单来说:
采用该结构的集合,对元素的存取有如下的特点
先进先出(即:存进去的元素,要在他前面的元素依次取出后,才能取出该元素)例如:火车过山洞,车头先进去,车尾后进去,车头先出,车尾后出
队列的入口,出口各占一侧
数组:
数组Array,是有序的元素序列,数组是在内存中开辟一端连续的空间,并在此空间存放元素,就像是一排出租屋,有100个房间,从001到100 每个房间都有固定编号,通过编号就可以快速找到租房子的人
简单来说,采用该结构的集合,对元素的存取有如下的特点
查找元素快,通过索引,可以快速访问指定位置的元素
增删元素慢
**
指定索引位置增加元素:
需要创建一个新数组,将指定新元素存储在指定索引位置,再把原数组元素根据索引,赋值到新数组对应索引的位置
指定索引位置删除元素:
需要创建一个新数组,把原数组元素根据索引,赋值到新数组对应索引的位置,原数组指定索引位置元素不复制到新数组中
链表:
链表:linked list由一系列节点node(链表中每一个元素称为节点)组成,节点可以在运行时动态生成,每个节点包含两个部分,一个是存储数据元素的数据域,另一个是存储下一个节点地址的指针域。我们常说的链表结构有单向链表和双向链表
单向链表:
简单来说,采用该结构的集合,对元素的存取有如下的特点:
多个结点之间,通过地址进行连接,例如,多个人手拉手,每个人使用自己的右手蜡烛下一个人的左手,依次类推,这样多个人就连在一起了
查找元素慢:
想查找某个元素需要通过连接的结点,依次向后查找指定元素
增删元素快:
树数据结构
树是有很多节点组成的
树基本结构介绍:
树具有的特点
1.每一个节点有零个或者多个子节点
2.没有父节点的节点称为根节点,一个树最多有一个根节点
3.每一个非根节点有且只有一个父节点
二叉树:
如果树中的每个节点的子节点的个数不超过2,那么该数就是一个二叉树
二叉查找数/二叉排序树
二叉查找树的特点:
1.左子树上所有的节点的值均小于等于他的根节点的值
2.右子树上所有的节点指均大于或者等于他的根节点的值
3.每一个子节点最多有两个子树
增删改查的性能都很高
遍历获取元素的时候可以按照“左中右”的顺序进行遍历
注意:二叉查找树存在的问题:会出现“瘸子”的现象,影响查找效率
平衡二叉树:
基于查找二叉树,但是让树不要太高,尽量元素均衡
为了避免出现“瘸子”的现象。减少树的高度,提高我们的搜索效率,又存在一种树的结构:“平衡二叉树”
规则:它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一颗平衡二叉树
旋转:
在构建一颗平衡二叉树的过程中,当有新的节点要插入时,检查是否因插入后而破坏了数的平衡,如果是,则需要做旋转去改变数的结构
左旋:
左旋就是将节点的右支往左拉,右节点变成父节点,并把晋升之后多余的左子节点让给降级节点的右子节点
右旋:
将节点的左支往右拉,左子节点变成腹肌诶单,并把晋升之后多余的右子节点让给降级节点的左子节点
左左:
左左即为在原来平衡的二叉树上,在节点的左子树的左子树下,有新节点插入,导致节点的左右子树的高度差为2,如下即为“10”节点的左子树“7” 的左子树“4”插入了接地那“5”或“3”导致失衡






红黑树:
就是平衡的二叉查找树:
**
概述:
红黑树是一种自平衡的二叉查找树,数计算机科学中用到的一种数据结构
红黑树不是高度平衡的,它的平衡是通过“红黑树的特性”进行实现的
红黑树的特性:
1.每一个节点或是红色的,或是黑色的
2.根节点必须是黑色的
3.每个叶节点(Nil)是黑色的;(如果一个节点没有子节点或者父节点,则该节点相应的指针属性值为Nil,这些Nil视为叶节点)
4.如果某一个节点是红色,那么它的子节点必须是黑色(不能出现两个红色节点相连的情况)
5.对每一个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点
在进行元素插入的时候,和之前一样,每一次插入完毕以后,使用黑色规则进行校验,如果不满足红黑规则,就需要通过变色,左旋和右旋来调整数,使其满足红黑规则
