当前位置: 首页 > news >正文

【数据结构】

架构梳理

  • 线性(1:1)

    • 线性表

      • 顺序存储 –> arr

      • 链式存储 –> 指针 (有头,无头)

        有头是指有一个不存数据的头,始终作为这个链表的起点。

        会更加简单,无头的话,更改首部节点会麻烦。

        头节点不仅可以作为起点,还可以作为存储信息的仓库,因为头节点只有*next是必须的。

        • 单链表

          • 循环
          • 不循环
        • 双向链表

          lib四个版本,第一个最基础完善,第二个改成了变长结构体,第三个在第二个的基础上封装了函数指针,第四个在第二个的基础上隐藏了数据结构,只暴露接口。

          学到这里可以去读一下内核有关list的实现,主要都是宏和内联函数。

          • 循环
          • 不循环
    • 队列

      练习:

      1. 表达式计算

      2. 球钟算法
        三个栈,1h,5min,1min。27个球,过了多久队列里又是1到27的顺序。

  • 树状(1:N)

    递归递归非递归

    • 深度:层数

    • 度:子树的个数

    • 叶子:边缘节点

    • 孩子:与父节点对应

    • 兄弟:相同父节点

    • 堂兄弟:相同爷节点

    • 二叉树:

      • 满二叉树:深度为k且节点为2^k-1的二叉树
      • 完全二叉树:一颗二叉树,只有倒数两层可以存在不满两个孩子的节点,且单个孩子时只能是左孩子
    • 存储:

      • 顺序:直观,但是浪费空间
        满二叉树:父节点n,左孩子2n,右孩子2n+1
      • 链式:灵活,空间利用率高
    • 遍历

      先加中,或者,中加后,都可以逆推出树。先加后不行。

      • 按行
      • 先序(根,左,右)
      • 中序(左,根,右)
      • 后序(左,右,根)
    • 平衡:

      有很多种条件判定。

      这棵树的左右子树个数差值为1。

    • 广义表

      ( root ( left ) ( right) ),进行嵌套。

    • 搜索树

      空间换时间,查找是**o(1)**。

      课后作业:词频统计

  • 图(N:M)

相关文章:

  • python-leetcode 68.有效的括号
  • 在Java项目中集成Deepseek大语言模型实践指南
  • AliSQL:阿里巴巴开源数据库的技术革新与应用实践
  • MySQL高可用之ProxySQL + MGR 实现读写分离实战
  • jmeter转义unicode变成中文
  • JMeter 教程:JSON 断言的简单介绍
  • 当PLC遇上电焊机器人:EtherCAT转CANopen上演工业级“语言翻译官”
  • Spring AI(7)——RAG
  • tigase源码学习笔记-事件总线EventBus
  • Pichome 开源网盘程序index.php 文件读取漏洞(CVE-2025-1743)
  • 【25软考网工】第七章 (2)UOS Linux文件和目录管理、用户和组管理
  • 破解 PCB 制造四大痛点:MOM 系统构建智能工厂新范式
  • SSRF(服务器端请求伪造)基本原理靶场实现
  • Java 02入门,封装继承多态
  • 哈希查找方法
  • Oracle RAC 中的 RBAL 进程
  • Android SharedPreferences:从零到一的全面解析与实战指南
  • Vue3 父子组件传值, 跨组件传值,传函数
  • 编译原理的部分概念
  • 桥梁凝冰在线监测装置:科技守护道路安全的新防线
  • 太平人寿党委书记赵峰调任海南省政府党组成员
  • 上海皮影戏《九色鹿》闪耀塞尔维亚,再获2项国际大奖
  • 总数再更新!我国新增三项全球重要农业文化遗产
  • 中国戏剧梅花奖终评结果公示,蓝天、朱洁静等15名演员入选
  • 4月份国民经济顶住压力稳定增长
  • 梅花奖在上海|秦海璐:演了15年《四世同堂》,想演一辈子