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


    1. 缘起

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

    2. 分类

    • 数组

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

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

      • 数组的数组
    • 结构体

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

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

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

    总结

    • 不同数据结构适用于不同场景,选择正确数据结构会让工作更简单,所以花时间考虑用什么数据结构是值得的
    • 大多数编程语言自带了预先做好的数据结构,程序员不同浪费时间从零写,时间可以花在更有趣的事情上
      • C++ 有「标准模板库」
      • Java 有 「Java 类库」
  • 相关阅读:
    洛谷 U140360 购物清单
    洛谷 U140359 批量处理
    洛谷 U140358 操作系统
    洛谷U140357 Seaway连续
    洛谷 U141394 智
    洛谷 U141387 金
    CF1327F AND Segments
    刷题心得—连续位运算题目的小技巧
    CF743C Vladik and fractions
    洛谷 P6327 区间加区间sin和
  • 原文地址:https://www.cnblogs.com/zxxsteven/p/15729907.html
Copyright © 2020-2023  润新知