• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

常用的非线性结构和线性结构有哪些都有什么特点和区分

武飞扬头像
业余码手
帮助1

非线性结构:

二维/多维数组

广义表

什么是树?

树是一个由N(n>=1)个有限的节点组成的具有层次关系的集合。
为什么叫树,是因为数据结构中的每个节点有零个或多个子节点,看起来就像一颗倒挂的树 树是由根节点和若干颗子树组成的树。

常用的树结构数据有哪些?

二叉树

二叉查找树
平衡二叉树
平衡二叉查找树

AVL 红黑树

完全二叉树

多路查找树

B树
B 树

什么是堆?

堆是一种特殊的树形数据结构,堆是一棵完全二叉树
堆的特点是堆中的某个节点的值总是不大于或不小于其父节点的值。
根节点最大的堆叫做最大堆或者大根堆,根节点最小的堆叫做最小堆或小根堆。

小顶堆
大顶堆
二项堆
优先队列
斐波那契队列

什么是图?

图(Graph)是一种非线性的具有 多对多 逻辑关系的数据结构 在图结构中 数据节点一般称为顶点 图就是一些顶点的集合。

顶点用圆圈表示,边就是这些圆圈之间的连线,顶点之间通过边连接。

线性结构:

线性表(顺序表 链表)

什么是线性表?

线性表是在内存中数据的一种组织,存储数据的方式
一个线性表是n个具有相同特性的数据元素的有限序列
线性表中数据元素之间是一对一的关系
除了第一个和最后一个数据元素外
其他数据都是首位相接的。

线性表分为哪两大类?

  1. 一般线性表
    就是指我们通常所说的"线性表" 可以自由删除或添加节点

  2. 受限线性表
    受限表示对节点的操作受限制 主要包括栈和队列

线性表有哪几种存储结构?

线性表有两种存储结构
顺序存储结构 读取较快 插入删除较慢
链式存储结构 读取较慢 插入删除较快

线性表和链表有什么关系?

线性表是数据结构中的逻辑结构,当采用顺序存储结构时,称为顺序表,当采用链式存储结构时,称为链表
所以,线性表以不同的存储形式可以包括,顺序表和链表。

顺序表

什么是顺序表?

顺序表是在计算机内存中以数组形式存储的线性表
采用顺序存储结构,将表中元素一个接一个的存入一组连续的存储单元中,线性表中的元素逻辑顺序与物理顺序一致。

链表

单向链表
双向链表
循环链表
什么是链表

链表是一种按照链式存储结构进行存储数据元素的数据结构。
链表中的每个节点不但包含数据本身,还包含下一个数据元素的指针,数据元素在物理空间上可能是非连续的,逻辑顺序是通过链表中的指针链接顺序来实现的。
链表中的数据可能包含重复。

链表有哪些优缺点?

优点:
大小不固定 可灵活扩展
内存利用率高 不会浪费内存
插入 删除效率快

缺点:
随机查找效率低

链表分为哪几类?

链表可以分为三类:

单链表
单链表中的元素只能指向下一个元素或者指空,元素之间不能相互指向。

双链表
双链表中的每个元素既能指向下一个元素也能指向上一个元素

循环链表
循环链表是指两种链表中的最后一个节点都指向第一个节点

什么是栈?

栈是一种受限的线性表,只能在表的固定一端进行插入和删除操作,称为栈顶,另外一端则称为栈低。
栈是按照先进后出(First In Last Out)FILO的原则存储数据的,数据按进入顺序依次被压入栈低,最后进入的数据在栈顶,所以越晚进入栈的数据就先出来。
从栈中插入新数据叫:进栈,入栈,压栈。
从栈中删除数据叫:出栈

栈和队列的区别?

栈和队列的区别
主要区别
栈是先进后出FILO
队列是先进先出FIFO
栈只能在表的一端进行插入和删除
队列只能在表的一端进行插入 在表的另一端进行删除

栈和堆(非线性表 树的一种)的区别?

栈和堆的区别
不同于JVM中的栈和堆 在数据结构中
栈 是一种先进后出的数据结构
堆 是一种特殊的树,一般都是指二叉树

队列

普通队列

阻塞队列

并发队列

什么是队列?

队列是一种受限的线性表,队列只能在表的一端(队尾)插入数据。
在表的另一端(队头)删除数据。
队列是按照先进先出FIFO的原则存储数据的,所以越早进入队列的数据就越先从队列中出来。
从队列中插入数据叫:入队。
从队列中删除一个数据叫:出队。

循环队列

一维数组

什么是数组?(Array)

是一个有序的元素序列 数组是用于存储多个相同类型数据的集合,可以有一维,二维以及多维等表现形式。
数据可以有不同的定义类型。如:整型数组,字符串数组,浮点型数组等。数组中的元素可以重复。

数组的优缺点?

优点: 查找速度快(包括随机查找)
缺点:

  1. 大小固定 可能浪费空间 不方便扩展
  2. 需要连续内存空间,对内存要求高
  3. 修改 删除效率慢

数组是线性表吗?

可以说是 但是两者并没有从属关系
线性表是一种抽象的数据结构 数据是一种具体的 物理的存储数据的数据结构。
线性表即可以用数组实现 也可以用链表实现 数组即可以实现线性表 也可以实现树 图 等。

数组和链表(线性表的一种)的区别?

主要有以下区别

数组的长度是固定的,链表是动态增减的。
数组的内存是定义时分配的 链表是运行时申请分配的。
数组中的元素顺序是由下标确定,链表中的元素顺序是由上下节点确定。

数组和链表怎么选?

使用数组
经常需要快速查询检索数据 很少对数据进行修改 删除 比如可以使用:ArrayList

使用链表
经常需要修改 删除数据 很少查询检索数据,比如可以使用:LinkedList

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgggehi
系列文章
更多 icon
同类精品
更多 icon
继续加载