计算机速成课 第十四集 数据结构

1. 缘起

  • 在处理的数据的时候,不想让数据像大学宿舍里一样混乱
  • 希望的数据是结构化的,方便读取
  • 因此,科学家发明了「数据结构」

2. 分类

  • 数组

    • 名称:也叫列表,或向量
    • 特点:数组的值一个一个连续存在内存里
    • 下标:为了拿到数组中的某个值,我们需要指定一个下标
    • 库函数
      • 排序函数:只要传入数组,就会返回排序后的数组,不需要写排序算法
  • 字符串

    • 其实就是字母、数字、标点符号等,组成的数组
  • 矩阵

    • 数组的数组
  • 结构体

    • 概念:多个变量打包在一起
    • 特点:可以创造更复杂的数据结构,消除这些限制
    • 举例
      • 节点:存一个变量,一个指针
      • 指针:是一种特殊变量,指向一个内存地址,因此得名
  • 链表

    • 特点1:是一种灵活的数据结构,能存很多个节点
    • 特点2:很容易重新排序,两端缩减,分割,倒序等
    • 特点3:很多复杂数据结构都用链表,最出名的是队列和栈
    • 灵活性是通过每个节点 指向 下一个节点实现的
    • 循环链表:最后一个结点指向头结点,形成一个环
    • 当程序员使用链表时,很少看指针具体指向哪里,而是用链表的抽象模型,更容易看懂
  • 队列

    • 像邮局排队,谁先来就排前面,这叫先进先出(FIFO)
    • 后进先出(LIFO)
    • 举例:松饼
    • 最高的节点叫「根节点」
    • 根节点下的所有节点,都叫「子节点」
    • 任何子节点的直属上层节点,叫「母节点」
    • 没有任何「子节点」的节点,也就是「树」结束的地方,叫「叶节点」
    • 重要性质:「根」到「叶」是单向的
    • 特点1:数据随意连接,包括循环
    • 特点2:可以用有多个指针的节点表示,因此没有「根」、「叶」、「子节点」、「父节点」这些概念,可以随意指向

总结

  • 不同数据结构适用于不同场景,选择正确数据结构会让工作更简单,所以花时间考虑用什么数据结构是值得的
  • 大多数编程语言自带了预先做好的数据结构,程序员不同浪费时间从零写,时间可以花在更有趣的事情上
    • C++ 有「标准模板库」
    • Java 有 「Java 类库」
原文地址:https://www.cnblogs.com/zxxsteven/p/15729907.html