全书总索引系统¶
1. 使用说明¶
这份索引的目标不是重复各章正文,而是解决四类“像翻教材附录一样”的需求:
- 忘了一个术语在哪一章讲过
- 忘了一个公式该去哪里查
- 忘了一个代码函数在哪个文件里
- 想把增强版内容和原 PDF 页码快速对齐
最推荐的配合方式:
- 先从站点首页、目录页或附录导航进入整套材料
- 系统复习时配合本书附录中的总复习路线图
- 精确回查术语、公式和函数时优先使用这份总索引
2. 原 PDF 页码映射总表¶
| 原 PDF 页码 | 对应章节 | 当前主文件 |
|---|---|---|
| 13-23 | 第1章 绪论 | 本书第1章正文 |
| 24-73 | 第2章 线性表 | 本书第2章正文 |
| 74-120 | 第3章 栈、队列和数组 | 本书第3章正文 |
| 121-135 | 第4章 串 | 本书第4章正文 |
| 136-209 | 第5章 树与二叉树 | 本书第5章正文 |
| 210-280 | 第6章 图 | 本书第6章正文 |
| 281-348 | 第7章 查找 | 本书第7章正文 |
| 349-411 | 第8章 排序 | 本书第8章正文 |
补充说明:
- 每章都保留了对应的 OCR 底稿、构建脚本和示例程序,主要用于工程维护和内容校对。
- 面向日常阅读时,优先使用正文页、代码专题页和本附录中的索引入口即可。
3. 术语总索引¶
3.1 第1章 绪论¶
核心术语:
- 数据结构
- 逻辑结构
- 存储结构
- 数据运算
- 算法五特性
- 时间复杂度
- 空间复杂度
- 最好 / 平均 / 最坏情况
主入口:
本书第1章正文
3.2 第2章 线性表¶
核心术语:
- 顺序表
- 动态顺序表
- 单链表
- 双链表
- 循环链表
- 静态链表
- 头插法
- 尾插法
- 头结点
- 按位查找
- 按值查找
- 链表逆置
主入口:
本书第2章正文第2章普通代码版
3.3 第3章 栈、队列和数组¶
核心术语:
- 栈
- 顺序栈
- 链栈
- 共享栈
- 队列
- 顺序队列
- 假溢出
- 循环队列
- 链队列
- 双端队列
- 后缀表达式
- 行优先存储
- 列优先存储
- 稀疏矩阵
- 三元组表
主入口:
本书第3章正文第3章普通代码版
3.4 第4章 串¶
核心术语:
- 串
- 子串
- 主串
- 模式串
- BF 匹配
- KMP
next数组nextval数组- 匹配失败跳转
- 可重叠匹配
主入口:
本书第4章正文第4章普通代码版
3.5 第5章 树与二叉树¶
核心术语:
- 树
- 结点度
- 树高
- 二叉树
- 满二叉树
- 完全二叉树
- 先序 / 中序 / 后序 / 层序遍历
- 线索二叉树
- 左孩子右兄弟
- 森林
- 哈夫曼树
- WPL
- 并查集
主入口:
本书第5章正文第5章普通代码版
3.6 第6章 图¶
核心术语:
- 无向图
- 有向图
- 度 / 入度 / 出度
- 路径 / 回路
- 连通分量
- 强连通分量
- 邻接矩阵
- 邻接表
- DFS
- BFS
- 拓扑排序
- 最小生成树
- Prim
- Kruskal
- Dijkstra
- Floyd
- AOE 网
- 关键路径
- 关键活动
主入口:
本书第6章正文第6章普通代码版
3.7 第7章 查找¶
核心术语:
- 查找表
- 静态查找
- 动态查找
- ASL
- 顺序查找
- 折半查找
- 分块查找
- 判定树
- BST
- AVL
- 红黑树
- B 树
- B+ 树
- Hash 表
- 装填因子
- 开放定址法
- 拉链法
- 堆积
- 逻辑删除
主入口:
本书第7章正文第7章普通代码版
3.8 第8章 排序¶
核心术语:
- 稳定性
- 内部排序
- 外部排序
- 插入排序
- 冒泡排序
- 快速排序
- 选择排序
- 堆排序
- 归并排序
- 计数排序
- 基数排序
- 初始归并段
- 多路归并
- 败者树
- 置换-选择
主入口:
本书第8章正文第8章普通代码版
4. 公式总索引¶
4.1 复杂度基础¶
- 顺序查找成功
ASL = (n + 1) / 2 - 无序顺序表顺序查找失败
ASL = n - 折半查找平均时间复杂度
O(log n) - Hash 表装填因子
alpha = n / m
主入口:
本书第1章正文本书第7章正文
4.2 数组与矩阵地址公式¶
- 一维数组偏移:
Loc(a[i]) = Loc(a[low]) + (i - low) * L - 二维数组行优先:
Loc(a[i][j]) = base + ((i - row_low) * col_count + (j - col_low)) * L - 二维数组列优先:
Loc(a[i][j]) = base + ((j - col_low) * row_count + (i - row_low)) * L - 对称矩阵压缩、三角矩阵压缩、三对角矩阵压缩的映射公式
主入口:
本书第3章正文第3章普通代码版
4.3 二叉树与树¶
- 二叉树性质:
n0 = n2 + 1 - 满二叉树结点数:
2^h - 1 - 第
i层最多结点数:2^(i-1) - 哈夫曼树带权路径长度:
WPL = sum(wi * li)
主入口:
本书第5章正文第5章普通代码版
4.4 图论高频公式¶
- 无向图度数和:
sum(deg(v)) = 2e - 有向图:
sum(indegree) = sum(outdegree) = e - 连通无向图最少边数:
n - 1 - 强连通有向图最少边数:
n(通常指n > 1) - Floyd 递推:
dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]) - 关键路径参数:
ve、vl、ee、el、l = el - ee
主入口:
本书第6章正文第6章普通代码版
4.5 查找与多路平衡树¶
- 折半查找判定树深度与比较次数对应
- B 树结点关键字数范围:
[t-1, 2t-1] - B 树孩子数范围:
[t, 2t](非根内部结点)
主入口:
本书第7章正文第7章普通代码版
4.6 排序比较公式与性质¶
- 直接插入 / 冒泡 / 选择的最坏时间复杂度通常为
O(n^2) - 快速排序平均时间复杂度
O(n log n),最坏O(n^2) - 堆排序时间复杂度
O(n log n) - 归并排序时间复杂度
O(n log n),辅助空间O(n) - 计数排序、基数排序不属于比较型排序
- 外部排序归并趟数由“初始归并段个数 + 归并路数”共同决定
主入口:
本书第8章正文第8章普通代码版
5. 代码函数总索引¶
5.1 第2章 线性表¶
代码主入口:第2章普通代码版
顺序表:
InitSeqListDestroySeqListEnsureSeqListCapacitySeqListInsertSeqListDeleteSeqListGetElemSeqListLocateElemSeqListEmptySeqListLengthPrintSeqList
单链表:
InitLinkListDestroyLinkListLinkListLengthLinkListGetElemLinkListLocateElemLinkListInsertLinkListDeleteBuildLinkListHeadInsertBuildLinkListTailInsertReverseLinkListPrintLinkList
双链表 / 循环链表 / 静态链表:
InitDLinkListDestroyDLinkListDLinkListPushBackDLinkListInsertAfterDLinkListDeleteNodePrintDLinkListInitCircularListDestroyCircularListCircularListPushBackPrintCircularListInitStaticLinkListStaticAllocStaticFreeStaticPushFrontPrintStaticLinkList
综合题函数:
FindKthFromEndPrintPairsWithSumIsDLinkListSymmetricFindFirstCommonNodeRemoveAbsDuplicatesReorderListFrontBackRemoveRangeSeqListDeduplicateSortedSeqListMergeSortedSeqListsMergeSortedLinkListsPartitionLinkListByValueDeleteMinSeqListReverseSeqListDeduplicateSortedLinkListFindMiddleNodeIntersectSortedLinkListsFindLoopStartNodeJoinCircularListsPairSumLinkList
5.2 第3章 栈、队列和数组¶
代码主入口:第3章普通代码版
栈:
InitSeqStackSeqStackEmptySeqStackFullPushSeqStackPopSeqStackGetTopSeqStackPrintSeqStackInitSharedStackPushSharedStack0PushSharedStack1PopSharedStack0PopSharedStack1InitLinkStackPushLinkStackPopLinkStackGetTopLinkStackDestroyLinkStack
应用:
IsBracketSequenceBalancedOperatorPrecedenceApplyBinaryOperatorEvaluatePostfixExpression
数组与矩阵:
RowMajorIndex1DRowMajorIndex2DColMajorIndex2DSymmetricMatrixIndexLowerTriangularMatrixIndexUpperTriangularMatrixIndexTridiagonalMatrixIndexDenseMatrixToTriplesPrintTriples
队列与双端队列:
InitCircularQueueEnqueueCircularQueueDequeueCircularQueueGetHeadCircularQueuePrintCircularQueueInitLinkQueueEnqueueLinkQueueDequeueLinkQueueGetHeadLinkQueuePrintLinkQueueDestroyLinkQueueInitDequePushFrontDequePushBackDequePopFrontDequePopBackDequePrintDeque
5.3 第4章 串¶
代码主入口:第4章普通代码版
顺序串 / 堆串:
InitSStringStrAssignSStringStrCopySStringStrEmptySStringStrCompareSStringStrLengthSStringSubStringSStringConcatSStringClearStringSStringPrintSStringInitHStringStrAssignHStringDestroyHString
匹配:
IndexBFGetNextArrayGetNextValArrayIndexKMPCountPatternMatchesNonOverlappingCountPatternMatchesOverlappingBFPrintIntArray1Based
5.4 第5章 树与二叉树¶
代码主入口:第5章普通代码版
二叉树基础:
InitBiTreeQueueEnqueueBiTreeDequeueBiTreeCreateNodeCreateBiTreeByPreorderDestroyBiTreePreorderTraversalInorderTraversalPostorderTraversalLevelOrderTraversalCountNodesCountLeavesCountDegreeOneCountDegreeTwoGetBiTreeHeightFindNodeLevelSwapChildrenPrintTraversalResult
线索二叉树:
CreateThreadNodeCloneBiTreeToThreadTreeDestroyThreadTreeInorderThreadingBuildInorderThreadedTreeFirstInorderThreadNodeNextInorderThreadNodeInorderThreadTraversal
树 / 森林转换:
CreateGTreeNodeDestroyGTreePreRootTraversalPostRootTraversalPreorderForestTraversalConvertTreeToBinaryTreeConvertForestToBinaryTreeConvertBinaryTreeToGTreeBuildSampleGeneralTreeBuildSampleForest
并查集与哈夫曼:
InitUnionFindFindSetUnionSetsPrintUnionFindStateSelectTwoMinNodesBuildHuffmanTreeComputeHuffmanWPLPrintHuffmanTree
5.5 第6章 图¶
代码主入口:第6章普通代码版
存储与基本操作:
InitAMGraphLocateVertexAMAddEdgeAMPrintAMGraphCreateArcNodeInitALGraphLocateVertexALAddArcNodeAddEdgeALPrintALGraphDestroyALGraph
遍历:
DFSAMBFSAMDFSALBFSALCountConnectedComponentsAM
应用:
TopologicalSortALKruskalMSTWeightAMPrimMSTWeightAMFloydAMPrintFloydDistancesPrintFloydPathAMDijkstraAMPrintDijkstraResultGetTopologicalOrderALCriticalPathALPrintCriticalPathResultBuildSampleGraphsBuildSampleDAGBuildSampleWeightedUndirectedGraphBuildSampleWeightedDirectedGraphBuildSampleAOEGraph
5.6 第7章 查找¶
代码主入口:第7章普通代码版
线性查找:
SeqSearchBinarySearchIterBinarySearchRecursiveBlockSearch
BST / AVL:
CreateBSTNodeBSTSearchBSTInsertBSTFindMinBSTDeleteBSTInorderDestroyBSTAVLHeightCreateAVLNodeUpdateAVLHeightGetBalanceFactorRotateRightRotateLeftAVLInsertAVLSearchAVLPreorderDestroyAVL
红黑树:
IsRedRBCreateRBNodeRBRotateLeftRBRotateRightRBFlipColorsRBInsertRBSearchRBMoveRedLeftRBMoveRedRightRBFixUpRBMinRBDeleteMinRBDeleteRBInorderDestroyRB
B 树 / B+ 树:
CreateBTreeNodeBTreeSearchBTreeSplitChildBTreeInsertNonFullBTreeInsertBTreeFindKeyBTreeGetPredecessorBTreeGetSuccessorBTreeMergeChildrenBTreeBorrowFromPrevBTreeBorrowFromNextBTreeFillChildBTreeDeleteFromNodeBTreeDeleteBTreePrintDestroyBTreeCreateBPlusNodeBPlusFirstKeyBPlusRefreshKeysBPlusInsertIntoLeafBPlusInsertRecursiveBPlusInsertBPlusBorrowFromPrevBPlusBorrowFromNextBPlusMergeChildrenBPlusDeleteRecursiveBPlusDeleteBuildSampleBPlusTreeBPlusFindLeafBPlusSearchBPlusPrintRangeBPlusPrintLeavesDestroyBPlusTree
Hash 表:
HashFuncInitHashOpenTableHashOpenInsertHashOpenSearchPrintHashOpenTableCreateChainNodeInitChainHashTableChainHashInsertChainHashSearchPrintChainHashTableDestroyChainHashTable
5.7 第8章 排序¶
代码主入口:第8章普通代码版
内部排序:
InsertSortBubbleSortSelectionSortPartitionQuickSortSiftDownHeapSortMergeMergeSortRecursiveMergeSortCountingSort
非比较型排序:
GetMaxValueCountingSortByDigitRadixSortLSD
外部排序与外排支撑:
PrintRunsMergePassExternalMergeSortSimulationLoserTreeAdjustBuildLoserTreeLoserTreeDemoReplacementSelectionRunsCopyArray
6. 原 PDF 与增强版的推荐对照方式¶
如果你还需要偶尔做原书对照,最推荐这样用:
- 先在这份索引里定位术语、公式或函数
- 再打开对应章节
自学版.md - 如果涉及代码,再进入对应章节的代码专题页查看普通代码版或逐行注释版
- 只有在做最后的原书核对时,再回
DS.pdf
也就是说,这份索引的作用,就是尽量把“回原 PDF”从默认动作变成最后手段。
7. 当前结论¶
到这里,这套总索引系统已经把原来最缺的一层补上了:
- 术语能总查
- 公式能总查
- 函数能总查
- 原 PDF 页码能总对齐
这会明显提升整套材料对原书的替代能力。