乐趣区

关于数据结构:这是一篇简单的数据结构图解笔记一

前言

笔者正在自学数据结构,深感书中的常识偏差 实践 代码,而对逻辑自身有些漠视。

次要是图少,字多,以至于学者学习之后对于逻辑的了解不够,最终沦为大学中常见的后果——背书。
(笔者接触过一些同学如何学习计算机,深感背书的危害)

为了帮忙他人也帮忙本人了解,我尝试着为常见的几种构造绘制一些动态图。因为工夫仓促,尚未全副实现。

逻辑构造和存储构造

逻辑构造只思考数据元素之间的关系,不思考具体实现。
存储构造思考在计算机中如何示意。

线性表

逻辑构造:

  • 所有数据按线性构造贮存
  • 参考元素后面的元素称为前驱
  • 参考元素前面的元素称为后继
  • 除第一个外,每个元素只有一个前驱
  • 处最初一个外,每个元素只有一个后继

存储构造:

顺序存储:

  • 提前申请出所有须要的内存地址
  • 逻辑地位相邻的数据元素物理地位也是相邻的
  • 插入数据时,插入地位之后的所有数据后移

长处:

  • 地址间断,查问速度快

毛病:

  • 长度固定,不能动静调整
  • 插入元素时须要挪动大量元素

链式构造:

  • 应用不间断的内存地址
  • 将数据元素分为数据域和指针域
  • 数据域存放数据
  • 头指针指向第一个元素
  • 指针域指向下一个元素
  • 插入数据时,扭转插入地位的指针即可

长处:

  • 大小可变,灵便又节约空间
  • 插入不便

毛病:遍历速度慢

逻辑构造:

  • 后进先出
  • 仅能在栈顶进行操作

存储构造:

程序栈:

  • 和程序表相似,一次申请一段间断的地址
  • 容量不固定,当初始容量用完后,再按设定的增量进行裁减
  • 须要两个指针 base 和 top,别离指向栈底和栈顶
  • 插入数据时,top 上移;删除数据时,top 下移
  • 插入数据的地位是 top 以后指向的地址

链栈

链栈与链表简直统一

  • 应用不间断的内存地址
  • 将数据元素分为数据域和指针域
  • 数据域存放数据
  • 栈顶指针指向第一个元素
  • 指针域指向下一个元素

不同之处在于:

  • 插入数据时,栈顶指向新插入的元素,新元素的指针域指向原来的栈顶


队列(未完待续)

逻辑构造:先进先出

总结

  1. 本周最大的播种是,通过一番查找和比照,终于把握了超低老本的 GIF 制作方法
  2. 动画制作是一门重要技能,再粗疏的语言形容也不如一张图片更活泼,再活泼的图片也不如一段动画更直观
  3. 将来我会缓缓学残缺本数据结构,之后的每一个知识点都会做一个动画,敬请期待

版权申明

本文作者:河北工业大学梦云智开发团队 – 刘宇轩
新人经验不足,有倡议欢送交换,有谬误欢送轻喷

退出移动版