这一部分为什么存在?
在完整笔记中阅读本节概念 要点 易考点 时间/空间复杂度 基本语句频度关于 n 的阶 循环主体计数、递归展开;O(1)<O(\log n)<O(n)<O(n\log n)<O(n^2) 头结点 单链表带头结点时,空表判断、首元操作与中间位置操作写法统一 408 代码题默认“带头结点”,读题先确认 循环队列 数组首尾相接;判空 front==rear,判满 (rear+1)%n==front(牺牲一个单元) 指针定义每题不同:2011-3(rear 指队尾元…
在完整笔记中阅读本节顺序表 vs 链表的操作代价(一切比较的源头)
在完整笔记中阅读本节顺序表 vs 链表(数据结构第一易混对):为什么易混——都是“线性表”。本质区别——物理连续性决定了:随机访问 vs 顺序访问、插删搬元素 vs 插删改指针、空间紧凑 vs 指针开销。一道题的判断:操作以按下标存取为主 → 顺序表;以任意位置插删为主且规模不定 → 链表。
在完整笔记中阅读本节形态一:出栈/出队序列合法性:2009-2(栈容量至少 3)、2010-1(附加限制的不可能序列)、2011-2(以 d 开头的序列 4 个)、2013-2(p2=3 时 p3 可能个数)、2017-2、2018-2(队列+栈混合输出序列)、2022-2(in/out 可能互为倒序)。
在完整笔记中阅读本节向前依赖:无(DS 起点)。 向后引出: 栈是递归与 DFS 的引擎、队列是 BFS 与层序遍历的引擎 → DS-3 树、DS-4 图; 顺序表 + 有序 → 折半查找(DS-5);顺序表是多数排序算法的舞台(DS-6); 链表操作是代码题第一大户 → DS-7; 跨学科:队列 → OS 就绪/阻塞队列、I/O 缓冲;栈 → 函数调用栈(CO-2/OS-1);KMP/串 → 网络报文处理(X-8)。
在完整笔记中阅读本节为什么用复杂度而不是秒数衡量算法? 线性关系的两种存法各用什么代价换什么? 顺序表插删为什么是 O(n)?链表插删 O(1) 的前提是什么? 单链表为什么常设头结点? 栈和队列分别限制出了什么语义?各自匹配什么场景? 循环队列为什么要牺牲一个单元?判空判满为什么要看题面定义? 中缀转后缀时栈里放什么?遇到右括号做什么? 递归为什么等价于栈?(调用信息压栈) 朴素模式匹配慢在哪?KMP 为什么 i 不用回退?next[j] 的含义? 双向…
在完整笔记中阅读本节