概述

1、什么是数据结构

  • 数据结构是计算机存储、组织数据的方式
  • 指相互之间存在一种或多种特定关系的数据元素的集合。
  • 通常情况下,合适的数据结构可以提高运行速度或者存储效率。
  • 数据结构往往同检索算法和索引技术有关

2、常用的数据结构有哪些?

  • 主要有这8种基本结构
    • 数组,栈,链表,队列,树,图,堆,散列表等
    • 常见的数据结构图解

3、每种数据结构都有优缺点,看当前最适合什么

数组—查询快,增删慢

  • 优点:
    • 查询快——数组的地址是连续的,通过数组的首地址可以找到数组,通过数组的索引可以快速查找某一个元素
  • 缺点:
    • 数组的长度是固定的,固定后无法扩容
    • 数组只能存储一种类型的数据
    • 增删慢——我们想要增加/删除一个元素,必须创建一个新数组,把源数组的数据复制过来,故在堆内存中,频繁的创建数组,复制数组中的元素,销毁数组,造成效率低下。
      常见的数据结构图解

栈–先进后出

描述

  • 只能栈顶操作,不能栈底操作
  • 从栈顶放入元素叫入栈,取出元素叫出栈
  • 吃了吐(特点)

适用场景:

  • 应用于实现递归功能的场景,例如:斐波那契数列
    常见的数据结构图解

队列–先进先出

描述

  • 可以在一端放入数据,另一端取出
  • 放入元素称为入队,取出元素称为出队

适用场景:

  • 多线程阻塞队列管理
    常见的数据结构图解

链表—查询慢,增删快

描述:

  • 链表是物理存储单元上非连续的、非顺序的存储结构,
  • 数据元素的逻辑顺序是通过链表的指针地址实现,
  • 每个元素包含两个结点,一个是存储元素的数据域 (内存空间),另一个是指向下一个结点地址的指针域。
  • 根据指针的指向,链表能形成不同的结构,例如单链表,双向链表,循环链表等

链表结构:

  • 1)单向链表:

    • 链表中只有一条链子,不能保证元素的顺序(存储和取出的顺序可能不一致)
  • 2)双向链表:

    • 链表中有两条链子,有一条链子是专门记录元素的顺序,是一个有序的集合

优缺点:

  • 优点:

    • 增删快:链表结构,增删一个元素,对链表的整体结构没有影响,只需改变前后两个元素节点的指针指向地址
    • 不需要初始化容量,可以任意加减元素
  • 缺点:

    • 查询慢:链表中地址不是连续的,每次查询元素,都必须从头开始查询
    • 含有指针域,占用空间

适用场景:

  • 数据量较小,需要频繁增删操作

常见的数据结构图解

描述:

  • 树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。
  • 把它叫做 “树” 是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。

特点:

  • 每个节点有零个或多个子节点;
  • 没有父节点的节点称为根节点;
  • 每一个非根节点有且只有一个父节点;
  • 除了根节点外,每个子节点可以分为多个不相交的子树;

常见结构:

  • 二叉树
  • 平衡树
  • 不平衡树
  • 排序树
  • 红黑树
    常见的数据结构图解

以下待定

散列表

相关文章:

  • 2021-12-03
猜你喜欢
  • 2021-12-15
  • 2021-06-01
  • 2021-11-23
  • 2021-12-12
相关资源
相似解决方案