数据结构

常见的数据结构

堆栈、队列、数组、链表和红黑树等,因为数据结构很重要内容涉及很多,所以这里只做简单介绍

1、栈(堆栈)

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

(1)栈(堆栈)的特点

先进后出:存进去的元素,要在后面的元素依次取出后,才能取出该元素。就像子弹压进弹夹,当开枪的时候永远都是后压进弹夹的的子弹先射出来。
栈的入口出口都是栈的顶端位置

(2)画图说明

在这里插入图片描述

2、队列

队列:queue,简称队列,它同堆栈一样也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的列一段进行删除

(1)队列的特点

先进先出:存进去的元素,要在它前面的元素依次取出后,才能取出该元素。就像火车过山洞,车头先进去,车尾后进去,但是出山洞的时候车头先出来,车尾后出来。
入口、出口各占一侧

(2)画图说明

在这里插入图片描述

3、数组

数组:Array,是有序的元素序列,数组是在内存中开辟一段连续的空间,并在此空间放元素。就像是一排出租屋,有一百个房间,从001到100每个房间都有固定编号,通过编号就可以快速找到租房子的人

(1)数组的特点

查找元素快:通过索引,可以快速访问指定位置的元素

增删元素慢:因为数组的长度是固定不变的,所以指定索引位置增加元素需要创建一个新的数组,将指定新元素存储在指定索引位置,再把原数组根据索引,复制到新数组的对应索引位置

4、链表

链表:linked list,有一系列的结点node(链表中每个元素称为结点)组成,结点可以在运行时动态生成,每个结点包括两个部分:一个是存储数据元素的数据域,另一个时存储下一个结点地址的指针域。我们常说的链表结构有单向链表和双向链表两种

(1)链表的特点

多个结点之间,通过地址进行连接。就像多个人受打手,每个人使用自己的右手拉往下一个人的左手,依次类推,这样多个人就连在一起了
查找元素慢:想查找某个元素,需要通过连接的结点,依次向后查找指定元素
增删元素快:链表中增加删除元素对链表的整体结构没有影响,所以快

(2)画图说明

在这里插入图片描述

5、红黑树

(1)树结构是什么样的?

一种像树一样的结构
在这里插入图片描述

(2)什么是二叉树

二叉树:binary tree,是每个结点不超过2的有序树(tree)
简单理解,就是一种类似于我们生活中树的结构,只不过每个结点上都最多只能有两个子结点。
二叉树是每个结点最多有两个树的数结构。顶上的叫根节点,两边被称作“左子树”和“右子树”
在这里插入图片描述

(3)什么是排序树(查找树)?

在二叉树的基础上,元素是有大小顺序的,左子树小,右子树大
在这里插入图片描述

(4)什么是平衡树、不平衡树

平衡树是左边子树的子元素等于右边子树的子元素个数,反之不相等即为不平衡树
在这里插入图片描述
在这里插入图片描述

(5)什么是红黑树?

红黑树是一种特殊的二叉查询树,他的查询速度非常快,查询子叶子结点最大次数和最小次数不能超过2倍

约束
① 结点可以是红色的或者是黑色的
② 根结点是黑色的
③ 叶子结点(空结点没有子元素的结点)是黑色的
④ 每个红色的结点的子结点都是黑色的
⑤ 任何一个结点到其每一个叶子结点的所有路径上黑色结点数相同
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值