第四章 串、数组、广义表
目录
nextval[j]( 注意要先求next[j]才能求nextval[j])
4.1 串
由零个或多个字符组成的有限序列。单引号括起来的字符序列;
串的基本概念:
串的长度:串中字符的数目。
空串:含零个字符的串。

例题分析:串的举例

串的比较
串和线性表的区别:

知识点1:串的表示:(存储结构)

如何表示串的长度?

串的链式存储表示

知识点2:串的模式匹配:
什么是模式匹配:
给定主串S和模式串T,在S中寻找T的过程称为模式匹配。
如果匹配成功,返回T'在S中的位置,如果匹配失败,返回0。
模式匹配算法:
BF算法、KMP算法
主串S 和 模式串T(又称 子串)

方法1:BF算法


BF算法步骤:



方法2:KMP算法


定义 next[j]函数

小结1:next[j]函数的意义

小结2:回溯模式串

计算next[j]的方法

KMP算法步骤

KMP算法描述

获取next[j]值的算法描述

求next[j]函数例题:
例题一:

例题二:

答案:

例题三:

答案:

求nextval[ ]

nextval[j]( 注意要先求next[j]才能求nextval[j])


写nextval[j]
J= 1 a 第一个nextval 写0
j = 2 第二个开始 【a】
首先 看next[j]的值,next[2] = 1;看j=1的模式字符是a,与j=2 的字符 相等:写next[1]的值0 = nextval[2]。
(跳过j = 3,4懂了的话,三自然懂了)
j = 4 从第四个开始 【 a】
首先 看next[j]的值,next[4] = 3;看j=3 的模式字符是a,与j=4 的字符相等;相等 继续往前看
next[3] = 2;看j=2 的模式字符是a,与j=4 的字符相等;相等 继续往前看
next[2] = 1;看j=1 的模式字符是a,与j=4 的字符相等;相等 继续往前看,前面没了,写最后的next[1]的值0= nextval[4]中
j = 5 从第5个开始 【b】
next[5] = 4,j = 4 的模式串是a,与b不想等,直接写next[5] = nextval[5]
不相等写 next[j]的值

例题:求next[j]和nextval[j]

答案:











