常用的非线性结构和线性结构有哪些都有什么特点和区分
非线性结构:
二维/多维数组
广义表
树
什么是树?
树是一个由N(n>=1)个有限的节点组成的具有层次关系的集合。
为什么叫树,是因为数据结构中的每个节点有零个或多个子节点,看起来就像一颗倒挂的树 树是由根节点和若干颗子树组成的树。
常用的树结构数据有哪些?
二叉树
二叉查找树
平衡二叉树
平衡二叉查找树
AVL 红黑树
完全二叉树
多路查找树
B树
B 树
堆
什么是堆?
堆是一种特殊的树形数据结构,堆是一棵完全二叉树
堆的特点是堆中的某个节点的值总是不大于或不小于其父节点的值。
根节点最大的堆叫做最大堆或者大根堆,根节点最小的堆叫做最小堆或小根堆。
小顶堆
大顶堆
二项堆
优先队列
斐波那契队列
图
什么是图?
图(Graph)是一种非线性的具有 多对多 逻辑关系的数据结构 在图结构中 数据节点一般称为顶点 图就是一些顶点的集合。
顶点用圆圈表示,边就是这些圆圈之间的连线,顶点之间通过边连接。
线性结构:
线性表(顺序表 链表)
什么是线性表?
线性表是在内存中数据的一种组织,存储数据的方式
一个线性表是n个具有相同特性的数据元素的有限序列
线性表中数据元素之间是一对一的关系
除了第一个和最后一个数据元素外
其他数据都是首位相接的。
线性表分为哪两大类?
-
一般线性表
就是指我们通常所说的"线性表" 可以自由删除或添加节点 -
受限线性表
受限表示对节点的操作受限制 主要包括栈和队列
线性表有哪几种存储结构?
线性表有两种存储结构
顺序存储结构 读取较快 插入删除较慢
链式存储结构 读取较慢 插入删除较快
线性表和链表有什么关系?
线性表是数据结构中的逻辑结构,当采用顺序存储结构时,称为顺序表,当采用链式存储结构时,称为链表。
所以,线性表以不同的存储形式可以包括,顺序表和链表。
顺序表
什么是顺序表?
顺序表是在计算机内存中以数组形式存储的线性表
采用顺序存储结构,将表中元素一个接一个的存入一组连续的存储单元中,线性表中的元素逻辑顺序与物理顺序一致。
链表
单向链表
双向链表
循环链表
什么是链表
链表是一种按照链式存储结构进行存储数据元素的数据结构。
链表中的每个节点不但包含数据本身,还包含下一个数据元素的指针,数据元素在物理空间上可能是非连续的,逻辑顺序是通过链表中的指针链接顺序来实现的。
链表中的数据可能包含重复。
链表有哪些优缺点?
优点:
大小不固定 可灵活扩展
内存利用率高 不会浪费内存
插入 删除效率快
缺点:
随机查找效率低
链表分为哪几类?
链表可以分为三类:
单链表
单链表中的元素只能指向下一个元素或者指空,元素之间不能相互指向。
双链表
双链表中的每个元素既能指向下一个元素也能指向上一个元素
循环链表
循环链表是指两种链表中的最后一个节点都指向第一个节点
栈
什么是栈?
栈是一种受限的线性表,只能在表的固定一端进行插入和删除操作,称为栈顶,另外一端则称为栈低。
栈是按照先进后出(First In Last Out)FILO的原则存储数据的,数据按进入顺序依次被压入栈低,最后进入的数据在栈顶,所以越晚进入栈的数据就先出来。
从栈中插入新数据叫:进栈,入栈,压栈。
从栈中删除数据叫:出栈
栈和队列的区别?
栈和队列的区别
主要区别:
栈是先进后出FILO
队列是先进先出FIFO
栈只能在表的一端进行插入和删除
队列只能在表的一端进行插入 在表的另一端进行删除
栈和堆(非线性表 树的一种)的区别?
栈和堆的区别
不同于JVM中的栈和堆 在数据结构中
栈 是一种先进后出的数据结构
堆 是一种特殊的树,一般都是指二叉树
队列
普通队列
阻塞队列
并发队列
什么是队列?
队列是一种受限的线性表,队列只能在表的一端(队尾)插入数据。
在表的另一端(队头)删除数据。
队列是按照先进先出FIFO的原则存储数据的,所以越早进入队列的数据就越先从队列中出来。
从队列中插入数据叫:入队。
从队列中删除一个数据叫:出队。
循环队列
一维数组
什么是数组?(Array)
是一个有序的元素序列 数组是用于存储多个相同类型数据的集合,可以有一维,二维以及多维等表现形式。
数据可以有不同的定义类型。如:整型数组,字符串数组,浮点型数组等。数组中的元素可以重复。
数组的优缺点?
优点: 查找速度快(包括随机查找)
缺点:
- 大小固定 可能浪费空间 不方便扩展
- 需要连续内存空间,对内存要求高
- 修改 删除效率慢
数组是线性表吗?
可以说是 但是两者并没有从属关系
线性表是一种抽象的数据结构 数据是一种具体的 物理的存储数据的数据结构。
线性表即可以用数组实现 也可以用链表实现 数组即可以实现线性表 也可以实现树 图 等。
数组和链表(线性表的一种)的区别?
主要有以下区别
数组的长度是固定的,链表是动态增减的。
数组的内存是定义时分配的 链表是运行时申请分配的。
数组中的元素顺序是由下标确定,链表中的元素顺序是由上下节点确定。
数组和链表怎么选?
使用数组
经常需要快速查询检索数据 很少对数据进行修改 删除 比如可以使用:ArrayList
使用链表
经常需要修改 删除数据 很少查询检索数据,比如可以使用:LinkedList
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgggehi
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13