39.常见数据结构:栈、队列、数组、链表

常见数据结构

数据结构概述

  • 数据结构是计算机底层存储,组织数据的方式,是指数据相互之间是以什么方式排列在一起的
  • 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率

  • 栈执行特点

    • 先进后出,后进先出

      类似一个器皿,顶部的拿出后才能拿下面的

      image.png
  • 栈数据结构:一端开口,称之为栈顶;一端封闭,称之为栈底

  • 数据进入栈模型的过程称之为:压栈 或 进栈

  • 数据离开栈模型的过程称之为:弹栈 或 出栈

队列

  • 队列执行特点

    • 先进先出,后进后出

      类似于排队,先进先出水

      image.png
  • 队列数据结构:两端开口,上端称为后端,下端称为前端

  • 数据从 后端 进入队列模型的过程称为:入队列

  • 数据从 前端 离开队列模型的过程称为:出队列

数组

  • 数组是内存中的一块连续区域;是一种根据索引查询快,增删慢的模型

  • 特点

    • 查询速度快:查询数据通过地址值和索引定位,查询任意数据耗时相同(元素在内存中是连续存储的)

      只是根据索引查询快

    • 删除效率低:要将原始数据删除,同时后面每个数据前移

    • 添加效率极低:添加位置后的每个数据后移,再添加元素

链表

  • 链表的特点
    • 链表中的元素是在内存中不连续存储的,每个元素节点包含数据值和下一个元素的地址

    • image.png
  • 链表查询慢,无论查询哪个数据都要从头开始找(且即便它拥有索引,仍然很慢,因为无法知道索引的位置,只知索引的编号)

  • 链表增加、删除操作相对较快(对于数组而言)

    这里指代增删的那一刻比较快,因为只需要修改目标元素的前后元素的索引即可完成增删;
    但是,在增删之前需要先找到前后元素,这个查询操作非常慢

  • 链表的种类

    • 单向链表:只支持从前往后找(单向链表拥有尾地址)
    • 双向链表:支持从前往后、从后往前查找(双向链表拥有头地址和尾地址)
  • 小结:数组根据索引查询元素的速度很快;双向链表增删链表首位的元素速度很快

    双链表可以说是队列和栈的结合体,因为它也完成了二者的结构

你可能感兴趣的:(39.常见数据结构:栈、队列、数组、链表)