第5章 串
第5章 串覆盖17个正式目录坐标,用表示合同、真实操作计数与轨迹门交付文本与模式、prefix推导、朴素与KMP比较轨迹、首个匹配和偏移反例
学习目标
- 把串ADT、存储、朴素匹配、KMP、next、nextval与改进边界落实为ADT、物理表示、前后置条件与可复查状态
- 只注入“prefix或next数组的索引约定改变后,搜索循环仍沿用旧回退位置”,定位第5章 串操作轨迹的首个错误状态
- 交付文本与模式、prefix推导、朴素与KMP比较轨迹、首个匹配和偏移反例,分开出版社目录、第2章样章、当前参考与本站扩展
为什么从这个问题开始
第5章 串围绕“KMP怎样复用已匹配前后缀,使文本指针不回退且仍返回与朴素匹配相同的位置?”建立贯穿任务:对普通文本和重复字符压力文本同时计算prefix数组与字符比较次数。第5章 串先冻结ADT、表示和输入,再执行操作并保存真实计数,最后用单故障和同输入恢复验收;只有守住“matched始终是已读文本后缀与模式前缀的最长匹配长度”并交付文本与模式、prefix推导、朴素与KMP比较轨迹、首个匹配和偏移反例,一张图或一个复杂度标签才可能升级为可复核证据。
原版、授权样章与当前参考边界
第5章 串以清华大学出版社详情页核对程杰、《大话数据结构[溢彩加强版]》、ISBN 9787302564713、2020年12月1日出版、C语言定位和全彩图表、动效课件定位。出版社页面在2026年7月30日显示印次1—9、最近印刷日期2026年3月24日;第5章 串把这当作当前书志状态,不把未来变化写死为原版内容。
第5章 串以出版社完整目录核对第1章至第9章、282个编号小节;加上9个章根,正式分母是291个坐标。旧清单只有73个聚合概念,既漏掉开场白、总结、结尾,也漏掉大量二级和三级小节;第5章 串现用完整坐标追踪,但不会复制目录页附带的生活类比摘句。
第5章 串可访问出版社第2章样章,因此总体来源级别记为authorized-sample。第5章 串只用样章局部核对算法定义、特性、设计要求、度量和复杂度;其余8章正文、全彩图、逐行代码与课件内容仍不视为已授权复制。第5章 串的中文讲解、算法轨迹、反例和交互均为本站独立重构,不是原书翻译或替代品。
第5章 串以NIST DADS、Open Data Structures和Princeton Algorithms核对当前术语、实现不变量与经典算法。第5章 串所有交互在浏览器内使用小规模确定性数据,不执行用户代码、不上传数据;操作计数来自实际循环和状态迁移,大O、动画终点或勾选数量都不会被包装成综合效率分。
本页独立事实来源
- 清华大学出版社图书详情:第5章 串用它核对程杰、ISBN 9787302564713、2020年12月1日出版、C语言定位、溢彩加强版和当前印次。
- 清华大学出版社完整目录:第5章 串用它核对第1章至第9章、282个编号小节及页码边界,不把目录中的叙事摘句复制成正文。
- NIST算法与数据结构词典:第5章 串用它核对ADT、数组、链表、栈、队列、树、图、查找、排序与复杂度术语。
- Princeton Algorithms官方课程站:第5章 串用它核对经典查找、排序、图算法和可执行样例的教学边界。
291正式坐标逐项深读
第5章 串
坐标 1/17:第5章 串;稳定证据键 DSVC-05-A。 第5章 串冻结文本、模式、索引约定和prefix状态,比较朴素与KMP的真实字符轨迹。 第5章 串在 DSVC-05-A 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
5.1 开场白
坐标 2/17:5·1 开场白;稳定证据键 DSVC-05-B。 第5章 串把“5·1 开场白”当作原版叙事坐标,不虚构其中故事;本站只交付本章预测、证据回顾或边界清单。 第5章 串在 DSVC-05-B 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
5.2 串的定义
坐标 3/17:5·2 串的定义;稳定证据键 DSVC-05-C。 第5章 串为这个坐标写对象域、操作签名、前置条件和后置条件,定义不依赖某个C结构体的偶然布局。 第5章 串在 DSVC-05-C 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
5.3 串的比较
坐标 4/17:5·3 串的比较;稳定证据键 DSVC-05-D。 第5章 串冻结文本、模式、索引约定和prefix状态,比较朴素与KMP的真实字符轨迹。 第5章 串在 DSVC-05-D 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
5.4 串的抽象数据类型
坐标 5/17:5·4 串的抽象数据类型;稳定证据键 DSVC-05-E。 第5章 串为这个坐标写对象域、操作签名、前置条件和后置条件,定义不依赖某个C结构体的偶然布局。 第5章 串在 DSVC-05-E 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
5.5 串的存储结构
坐标 6/17:5·5 串的存储结构;稳定证据键 DSVC-05-F。 第5章 串把逻辑元素映射到槽位或结点身份,逐项核对长度、可达性、边界与失败原子性。 第5章 串在 DSVC-05-F 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
5.5.1 串的顺序存储结构
坐标 7/17:5·5·1 串的顺序存储结构;稳定证据键 DSVC-05-G。 第5章 串把逻辑元素映射到槽位或结点身份,逐项核对长度、可达性、边界与失败原子性。 第5章 串在 DSVC-05-G 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
5.5.2 串的链式存储结构
坐标 8/17:5·5·2 串的链式存储结构;稳定证据键 DSVC-05-H。 第5章 串把逻辑元素映射到槽位或结点身份,逐项核对长度、可达性、边界与失败原子性。 第5章 串在 DSVC-05-H 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
5.6 朴素的模式匹配算法
坐标 9/17:5·6 朴素的模式匹配算法;稳定证据键 DSVC-05-I。 第5章 串冻结文本、模式、索引约定和prefix状态,比较朴素与KMP的真实字符轨迹。 第5章 串在 DSVC-05-I 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
5.7 KMP模式匹配算法
坐标 10/17:5·7 KMP模式匹配算法;稳定证据键 DSVC-05-J。 第5章 串冻结文本、模式、索引约定和prefix状态,比较朴素与KMP的真实字符轨迹。 第5章 串在 DSVC-05-J 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
5.7.1 KMP模式匹配算法的原理
坐标 11/17:5·7·1 KMP模式匹配算法的原理;稳定证据键 DSVC-05-K。 第5章 串冻结文本、模式、索引约定和prefix状态,比较朴素与KMP的真实字符轨迹。 第5章 串在 DSVC-05-K 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
5.7.2 next数组值的推导
坐标 12/17:5·7·2 next数组值的推导;稳定证据键 DSVC-05-L。 第5章 串把逻辑元素映射到槽位或结点身份,逐项核对长度、可达性、边界与失败原子性。 第5章 串在 DSVC-05-L 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
5.7.3 KMP模式匹配算法的实现
坐标 13/17:5·7·3 KMP模式匹配算法的实现;稳定证据键 DSVC-05-M。 第5章 串冻结文本、模式、索引约定和prefix状态,比较朴素与KMP的真实字符轨迹。 第5章 串在 DSVC-05-M 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
5.7.4 KMP模式匹配算法的改进
坐标 14/17:5·7·4 KMP模式匹配算法的改进;稳定证据键 DSVC-05-N。 第5章 串冻结文本、模式、索引约定和prefix状态,比较朴素与KMP的真实字符轨迹。 第5章 串在 DSVC-05-N 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
5.7.5 nextval数组值的推导
坐标 15/17:5·7·5 nextval数组值的推导;稳定证据键 DSVC-05-O。 第5章 串把逻辑元素映射到槽位或结点身份,逐项核对长度、可达性、边界与失败原子性。 第5章 串在 DSVC-05-O 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
5.8 总结回顾
坐标 16/17:5·8 总结回顾;稳定证据键 DSVC-05-P。 第5章 串把“5·8 总结回顾”当作原版叙事坐标,不虚构其中故事;本站只交付本章预测、证据回顾或边界清单。 第5章 串在 DSVC-05-P 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
5.9 结尾语
坐标 17/17:5·9 结尾语;稳定证据键 DSVC-05-Q。 第5章 串把“5·9 结尾语”当作原版叙事坐标,不虚构其中故事;本站只交付本章预测、证据回顾或边界清单。 第5章 串在 DSVC-05-Q 下保存输入、表示、操作序列、真实计数、输出、不变量、单故障首错和同输入恢复;目录标题只限定原版范围,不能单独证明算法正确、复杂度或本站教学扩展。
三个可操作结构与算法实验
第5章 串先预测:若只注入“prefix或next数组的索引约定改变后,搜索循环仍沿用旧回退位置”,抽象合同、物理表示、前置条件、状态、不变量、输出或操作计数中的哪一项最先变化?第5章 串随后选择正式坐标与表示,调整小输入获得真实轨迹,再沿基线、故障和恢复逐项关闭发布门。
表示合同:连接ADT、物理存储与不变量
抽象对象—物理表示—不变量
第5章 串
先选正式坐标和来源轨,再比较同一抽象对象的存储关系与必须保持的性质。
坐标 1/17
第5章 串
出版社完整目录限定2020溢彩加强版的291个正式坐标;目录中的叙事句不等于算法证明。
- 存储合同
- 元素按下标映射到连续槽位;容量与逻辑长度分开记录。
- 关系映射
- 第 i 个逻辑元素由槽位 i 表示,随机访问依赖有效下标。
- 表示不变量
- 0 ≤ length ≤ capacity;有效区间之外不属于线性表。 本页另要求:matched始终是已读文本后缀与模式前缀的最长匹配长度
第5章 串的操作计数器真正执行顺序与折半查找、数组与链表插入模型、循环队列、KMP、树遍历、Dijkstra或排序循环。第5章 串的固定小图和小数组用于复算机制,不代表生产负载;缓存、分配器、语言实现、输入分布和硬件效应需要另做基准测试。
最小可重现实验协议
- 第5章 串先冻结元素身份、输入规模、逻辑关系、物理表示、容量、索引约定、比较器、图方向与权重以及成功条件。
- 第5章 串用小输入建立参考轨迹并保存文本与模式、prefix推导、朴素与KMP比较轨迹、首个匹配和偏移反例;输出、多重集、可达性或计数不稳定就停止,不用复杂度表解释实现。
- 第5章 串保持其余条件不变,只注入“prefix或next数组的索引约定改变后,搜索循环仍沿用旧回退位置”,记录首个越界、错误边、错误候选区、错误输出或不变量破坏。
- 第5章 串撤销唯一故障,从干净结构以同一输入重放;结构、输出、操作计数和“matched始终是已读文本后缀与模式前缀的最长匹配长度”没有一起恢复时,结论标记失败或未知。
小结与上架门
第5章 串把串ADT、存储、朴素匹配、KMP、next、nextval与改进边界连接成可复核状态链:完整目录给正式坐标,第2章样章限定局部正文,当前参考核对新陈述,ADT合同解释对象,物理表示承载状态,真实操作计数暴露成本,单故障定位首错,同输入恢复决定结论能否上架。第5章 串最终交付文本与模式、prefix推导、朴素与KMP比较轨迹、首个匹配和偏移反例,并同时报告授权、前提、成本模型、输入分布与未知项。
练习与答案
练习
问题 1:5.1 开场白
为第5章 串的证据键 DSVC-05-B 设计一个最小输入、参考操作轨迹、真实计数、单前提故障和恢复断言,并说明结构不变量。
问题 2:5.2 串的定义
为第5章 串的证据键 DSVC-05-C 设计一个最小输入、参考操作轨迹、真实计数、单前提故障和恢复断言,并说明结构不变量。
问题 3:5.3 串的比较
为第5章 串的证据键 DSVC-05-D 设计一个最小输入、参考操作轨迹、真实计数、单前提故障和恢复断言,并说明结构不变量。
问题 4:5.4 串的抽象数据类型
为第5章 串的证据键 DSVC-05-E 设计一个最小输入、参考操作轨迹、真实计数、单前提故障和恢复断言,并说明结构不变量。
问题 5:5.5 串的存储结构
为第5章 串的证据键 DSVC-05-F 设计一个最小输入、参考操作轨迹、真实计数、单前提故障和恢复断言,并说明结构不变量。
问题 6:5.6 朴素的模式匹配算法
为第5章 串的证据键 DSVC-05-I 设计一个最小输入、参考操作轨迹、真实计数、单前提故障和恢复断言,并说明结构不变量。
问题 7:5.7 KMP模式匹配算法
为第5章 串的证据键 DSVC-05-J 设计一个最小输入、参考操作轨迹、真实计数、单前提故障和恢复断言,并说明结构不变量。
问题 8:5.8 总结回顾
为第5章 串的证据键 DSVC-05-P 设计一个最小输入、参考操作轨迹、真实计数、单前提故障和恢复断言,并说明结构不变量。
问题 9:5.9 结尾语
为第5章 串的证据键 DSVC-05-Q 设计一个最小输入、参考操作轨迹、真实计数、单前提故障和恢复断言,并说明结构不变量。
问题 10:为什么291个坐标不等于291段原书正文
第5章 串应怎样描述出版社完整目录、第2章样章和本站交互之间的授权与证据关系?
问题 11:什么时候不能发布“更快”或“正确”
第5章 串缺少哪些证据时只能报告局部观察?
六个裁决术语
第5章 串使用↡第5章 串中由值集合与操作语义定义且不绑定单一物理布局的合同、↡第5章 串中每次合法操作前后都必须成立的槽位、可达边、树序或图边性质、↡第5章 串中某操作被允许执行之前输入与状态必须满足的约束、↡第5章 串从真实轨迹统计的比较、读取、写入、搬移、改链或松弛次数、↡第5章 串的故障轨迹相对参考轨迹最早出现越界、不变量破坏或错误输出的位置、↡第5章 串撤销唯一故障并用原输入恢复结构、输出、不变量与计数的断言构成最小证据语言;第5章 串用它们指向真实对象、状态和轨迹,不生成成熟度分、难度分或综合效率分。
名词解释
本章出现的专业名词,用大白话再讲一遍。
- 抽象数据类型
第5章 串中由值集合与操作语义定义且不绑定单一物理布局的合同。
- 表示不变量
第5章 串中每次合法操作前后都必须成立的槽位、可达边、树序或图边性质。
- 前置条件
第5章 串中某操作被允许执行之前输入与状态必须满足的约束。
- 操作计数
第5章 串从真实轨迹统计的比较、读取、写入、搬移、改链或松弛次数。
- 首个错误状态
第5章 串的故障轨迹相对参考轨迹最早出现越界、不变量破坏或错误输出的位置。
- 同输入恢复
第5章 串撤销唯一故障并用原输入恢复结构、输出、不变量与计数的断言。