数据结构(选学)
看穿数组、链表、树、图的底层逻辑与权衡取舍
按 空格/→ 演示下一步
全部页面点击任意一页,跳回舞台从这页播放
数据结构(选学)
看穿数组、链表、树、图的底层逻辑与权衡取舍
数据结构的基本概念
你去图书馆找《数据结构》——管理员按分类上架、按编号定位,10 秒就能取出。这就是"把数据组织起来"的价值,也是数据结构要解决的核心问题。
分类方式 = 逻辑结构,编号方式 = 存储结构,借阅流程 = 操作
单链表
数组像一排编号座位,3 排 7 座一查就知道;要在中间插一排,后面的全得挪。火车呢——想加一节车厢,挂钩上就行,不用动别的。这「一节扣一节、每节只记得下一节」就是单链表的核心思路。
每节车厢是节点;车厢里的货物是 data;车钩是 next;要找第 N 节只能从车头一节节走过去
单链表的插入和删除
当你需要在链表中间插入或删除一个节点时,最直观的反应是『把后面的节点全部挪一下』——但链表的设计者说:完全不需要,只改一两根指针就够了。为什么?
只需重新握手(改 next 指针),队伍里其他人位置不动
栈和队列
上一节我们用指针串好了单链表,谁先谁后没限制。但实际工程里有两种「规矩特别严」的存取方式出场率最高:一种像叠盘子只能拿最上面,一种像食堂打饭必须排队。今天认认它们。
先排的人先打饭离开,后来的人只能站到队尾,与队列的进出方式一致
树结构
树结构:定义、要点与典型应用
二叉树
上页我们认识了「树」:任意节点可以有任意多个孩子。但加上「每个节点最多 2 个孩子」这条限制后,看似削弱了灵活性,却换来搜索与遍历上的巨大便利——这就是二叉树。
每次回答「大了/小了」就把候选砍半,N 个数只需 ⌈log₂N⌉ 次
遍历二叉树
上一页我们搭好了一棵二叉树,但节点摆在那儿不会自己说话——真正的问题是:怎么按某种确定的顺序,把每个节点都恰好访问一次?这就是遍历。
先序=到了就打招呼;中序=左边亲戚全走完才轮到自己;后序=所有下属都问完好才轮到自己
二级C考点解析之数据结构
从单链表到二叉树遍历,核心结构我们都过了一遍。二级C考这一块以选择题为主,三个层次把握住就能稳过:概念辨析、复杂度判断、综合应用。
认识食材对应概念辨析,掌握火候对应复杂度判断,摆盘出品对应综合应用
二级C考点解析之数据结构
前面我们挨个看了链表、栈、树……现在把它们收拢到二级C的试卷上——看看考什么、怎么考、坑在哪。
盘子只能从最上面拿=栈顶;排队先到先服务=队头出队
本节要点
- ✓线性表的操作成本取决于存储与指针关系
- ✓栈和队列都是受限线性表,核心差异在访问规则
- ✓树体现层次关系,二叉树进一步限制分支数
- ✓遍历规定访问次序,不会自动改变树的结构
- ✓算法分析须兼顾时间、空间与边界情形
课后思考
先独立思考,再对照参考答案。三道题分别对应回顾、应用、迁移三个层次。
参考答案单链表只有 next 指针,找到目标后无法回退到前驱。双向链表多了 prev 指针,可直接定位前驱完成 O(1) 删除。
参考答案两个栈:A 存浏览历史、B 存前进记录。单链表不支持 O(1) 栈顶操作,回退代价也高。
参考答案不能。先序/后序能定根但分不开左右;中序能分左右却定不了根。必须两种搭配。中序是唯一能区分左右子树的线索。