本文章部分资料来源:蜂考_数据结构_pdf,本文章不用于商业用途,仅用于自学,侵删
知识点:
判断题:
- KMP算法的特点是在模式匹配时指示主串的指针不会变小回溯。√
2. KMP算法下,长为n的字符串匹配长度为m的字串的时间复杂度为 O(M+N)√
3.假设模式串是abababaab,则KMP模式匹配算法中的next[j] = 0 1 1 2 3 4 5 6 2。√
b站_青岛大学王卓老师
4 . 空串与空格串是相同的。×
5 . 串是一种特殊的线性表 √
6. 若LS=(( )),该广义表表长为1,表头、表尾均为空表( )。√
选择题:
1、 设主串 T = abaabaabcabaabc,模式串 S = abaabc,采用 KMP 算法进行模式匹配,到匹配成功时为止,在匹配过程中进行的单个字符间的比较次数是:10
图片↑来源于此链接,侵删
2、 串是一种特殊的线性表,其特殊性体现在(数据元素是一个字符)。
3、 设广义表L=((a,b,c)),则L的长度和深度分别为(1和2)
广义表的深度是指广义表中展开后所含括号的层数,广义表的长度是指广义表中所含元素的个数。根据定义易知L的长度为1,深度为2。
4、 广义表((a,b,c,d))的表头、表尾是(表头:(a,b,c,d) 表尾:( ))。
表头是第一个元素,表尾是去掉第一个元素之后的部分
换一个广义表:((a,b),c,d)表头(a,b) ; 表尾(c,d)
5、 对n阶对称矩阵压缩存储时,需要表长为(n(n+1)/2)的顺序表。
6、 稀疏矩阵一般的压缩存储方式有两种,即(三元组和十字链表)。
7、 带行表的三元组表是稀疏矩阵的一种(顺序存储结构)
8、 广义表是一种(递归的)数据结构。
9、 广义表与稀疏矩阵都是线性表的扩展,它们的共同点为(数据元素本身是一个数据结构)。
10、 设串中字符数为n,则其子串数目为( s=(1+n)*n/2+1) )
11、 设目标串text=“abccdcdccbaa”,模式串pattern=“cdcc”,若采用BF(Brute Force)算法,则在第(6)趟匹配成功。
12、 有一个100×90的稀疏矩阵,非0元素有10,设每个整型数占2个字节,则用三元组表示该矩阵时,所需的字节数是(66)
13、下面的程序段违反了算法的(有穷性)原则。
void sam()
{ int n=2;
while (n%2==0) n+=2;
printf(“%d”,n);
}
14、表头和表尾均为空表的广义表是( ) B.(())
15、若n为主串长度,m为模式串长度,采用BF(Brute Force)模式匹配算法,在最坏情况下需要的字符比较次数为 (n-m+1)*m
主串前面n-m个位置都部分匹配到子串的最后一位,即这n-m位比较了m次,别忘了最后m位也各比较了一次,还要加上m!所以总次数为:(n-m)*m+m
=(n-m+1)*m
16、根据KMP算法,模式串p="abaabcac"各字符对应的失配值分别是 -1;0;0;1;1;2;0;1
失配值等于next数组的值-1,